@@ -16,8 +16,8 @@ public async Task<ISet<string>> GetReactionsAsync(string subjectId, Guid authorI
1616 var pipeline = _subjects
1717 . Find ( session , subject => subject . Id == ObjectId . Parse ( subjectId ) )
1818 . Project ( subject => subject . ReactionsByAuthorId . ContainsKey ( authorId . ToString ( ) )
19- ? subject . ReactionsByAuthorId [ authorId . ToString ( ) ]
20- : new string [ ] { } ) ;
19+ ? subject . ReactionsByAuthorId [ authorId . ToString ( ) ]
20+ : new string [ ] { } ) ;
2121
2222 var reactions = await pipeline . FirstOrDefaultAsync ( ) ?? throw new NotFoundException ( ) ;
2323 return reactions . ToHashSet ( ) ;
@@ -38,16 +38,13 @@ public async Task SetReactionsAsync(string subjectId, Guid authorId, ISet<string
3838 throw new NotFoundException ( ) ;
3939 }
4040
41- public async Task UpdateReactionCountersAsync ( string subjectId , IEnumerable < string > reactionsToAdd , IEnumerable < string > reactionsToRemove )
41+ public async Task UpdateReactionCountersAsync ( string subjectId , IDictionary < string , int > reactionsDiff )
4242 {
43- var increments = reactionsToAdd . Select ( reaction =>
44- Builders < TDocument > . Update . Inc ( subject => subject . ReactionCounters [ reaction ] , 1 ) ) ;
45-
46- var decrements = reactionsToRemove . Select ( reaction =>
47- Builders < TDocument > . Update . Inc ( subject => subject . ReactionCounters [ reaction ] , - 1 ) ) ;
43+ var updates = reactionsDiff . Select ( kv =>
44+ Builders < TDocument > . Update . Inc ( subject => subject . ReactionCounters [ kv . Key ] , kv . Value ) ) ;
4845
4946 var filter = Builders < TDocument > . Filter . Eq ( subject => subject . Id , ObjectId . Parse ( subjectId ) ) ;
50- var update = Builders < TDocument > . Update . Combine ( increments . Union ( decrements ) ) ;
47+ var update = Builders < TDocument > . Update . Combine ( updates ) ;
5148 var result = await _subjects . UpdateOneAsync ( session , filter , update ) ;
5249
5350 if ( result . MatchedCount == 0 )
@@ -76,7 +73,7 @@ await _subjects
7673
7774 await _subjects . UpdateOneAsync ( session , filter , update ) ;
7875 }
79-
76+
8077 public async Task ExcludeCommentFromMetadataAsync ( string subjectId )
8178 {
8279 var filter = Builders < TDocument > . Filter . Eq ( subject => subject . Id , ObjectId . Parse ( subjectId ) ) ;
0 commit comments