@@ -7,13 +7,25 @@ const _ = require('lodash')
7
7
const uuid = require ( 'uuid/v4' )
8
8
const joi = require ( 'joi' )
9
9
const logger = require ( 'winston' )
10
+ const config = require ( 'config' )
10
11
11
12
const dbhelper = require ( '../common/dbhelper' )
12
13
const helper = require ( '../common/helper' )
13
14
const { originator, mimeType, events } = require ( '../../constants' ) . busApiMeta
14
15
const HelperService = require ( './HelperService' )
15
16
const SubmissionService = require ( './SubmissionService' )
16
17
18
+ const { ReviewDomain } = require ( "@topcoder-framework/domain-submission" ) ;
19
+
20
+ const {
21
+ DomainHelper : { getLookupCriteria, getScanCriteria } ,
22
+ } = require ( "@topcoder-framework/lib-common" ) ;
23
+
24
+ const reviewDomain = new ReviewDomain (
25
+ config . GRPC_SUBMISSION_SERVER_HOST ,
26
+ config . GRPC_SUBMISSION_SERVER_PORT
27
+ ) ;
28
+
17
29
const table = 'Review'
18
30
19
31
/**
@@ -24,14 +36,7 @@ const table = 'Review'
24
36
*/
25
37
async function _getReview ( reviewId ) {
26
38
// Construct filter to retrieve record from Database
27
- const filter = {
28
- TableName : table ,
29
- Key : {
30
- id : reviewId
31
- }
32
- }
33
- const result = await dbhelper . getRecord ( filter )
34
- return result . Item
39
+ return reviewDomain . lookup ( getLookupCriteria ( "id" , reviewId ) )
35
40
}
36
41
37
42
/**
@@ -157,33 +162,17 @@ async function createReview(authUser, entity) {
157
162
entity . v5ScoreCardId = possibleV5ScoreCardId
158
163
}
159
164
160
- const item = _ . extend (
161
- {
162
- id : uuid ( ) ,
163
- created : currDate ,
164
- updated : currDate ,
165
- createdBy : authUser . handle || authUser . sub ,
166
- updatedBy : authUser . handle || authUser . sub ,
167
- status : entity . status || 'completed'
168
- } ,
169
- entity
170
- )
171
-
172
165
if ( _ . intersection ( authUser . roles , [ 'Administrator' , 'administrator' ] ) . length === 0 && ! authUser . scopes ) {
173
166
if ( entity . reviewedDate ) {
174
167
throw new errors . HttpStatusError ( 403 , 'You are not allowed to set the `reviewedDate` attribute on a review' )
175
168
}
176
169
}
177
170
178
- item . reviewedDate = entity . reviewedDate || item . created
179
-
180
- // Prepare record to be inserted
181
- const record = {
182
- TableName : table ,
183
- Item : item
184
- }
185
-
186
- await dbhelper . insertRecord ( record )
171
+ const createdItem = await reviewDomain . create ( {
172
+ ...entity ,
173
+ status : entity . status || 'completed' ,
174
+ reviewedDate : entity . reviewedDate || item . created ,
175
+ } )
187
176
188
177
// Push Review created event to Bus API
189
178
// Request body for Posting to Bus API
@@ -196,7 +185,7 @@ async function createReview(authUser, entity) {
196
185
{
197
186
resource : helper . camelize ( table )
198
187
} ,
199
- item
188
+ createdItem
200
189
)
201
190
}
202
191
@@ -205,7 +194,7 @@ async function createReview(authUser, entity) {
205
194
206
195
// Inserting records in DynamoDB doesn't return any response
207
196
// Hence returning the same entity to be in compliance with Swagger
208
- return item
197
+ return createdItem
209
198
}
210
199
211
200
createReview . schema = {
@@ -285,45 +274,24 @@ async function _updateReview(authUser, reviewId, entity) {
285
274
}
286
275
}
287
276
288
- // Record used for updating in Database
289
- const record = {
290
- TableName : table ,
291
- Key : {
292
- id : reviewId
293
- } ,
294
- UpdateExpression : `set score = :s, scoreCardId = :sc, submissionId = :su,
295
- typeId = :t, reviewerId = :r, #st = :st,
296
- updated = :ua, updatedBy = :ub, reviewedDate = :rd
297
- ${ v5ScoreCardId ? ', v5ScoreCardId = :v5s' : '' } ` ,
298
- ExpressionAttributeValues : {
299
- ':s' : entity . score || exist . score ,
300
- ':sc' : scoreCardId ,
301
- ':su' : entity . submissionId || exist . submissionId ,
302
- ':t' : entity . typeId || exist . typeId ,
303
- ':r' : entity . reviewerId || exist . reviewerId ,
304
- ':st' : entity . status || exist . status || 'completed' ,
305
- ':ua' : currDate ,
306
- ':ub' : authUser . handle || authUser . sub ,
307
- ':rd' : entity . reviewedDate || exist . reviewedDate || exist . created ,
308
- ...( v5ScoreCardId ? { ':v5s' : v5ScoreCardId } : { } )
309
- } ,
310
- ExpressionAttributeNames : {
311
- '#st' : 'status'
312
- }
313
- }
314
-
315
- // If metadata exists, add it to the update expression
316
- if ( entity . metadata || exist . metadata ) {
317
- record . UpdateExpression =
318
- record . UpdateExpression + ', metadata = :ma'
319
- record . ExpressionAttributeValues [ ':ma' ] = _ . merge (
320
- { } ,
321
- exist . metadata ,
322
- entity . metadata
323
- )
277
+ const updatedData = {
278
+ score : entity . score || exist . score ,
279
+ scoreCardId,
280
+ submissionId : entity . submissionId || exist . submissionId ,
281
+ typeId : entity . typeId || exist . typeId ,
282
+ reviewerId : entity . reviewerId || exist . reviewerId ,
283
+ status : entity . status || exist . status || 'completed' ,
284
+ reviewedDate : entity . reviewedDate || exist . reviewedDate || exist . created ,
285
+ ...( v5ScoreCardId ? { v5ScoreCardId } : { } ) ,
286
+ ...( entity . metadata || exist . metadata ? { metadata : _ . merge ( { } , exist . metadata , entity . metadata ) } : { } )
324
287
}
325
288
326
- await dbhelper . updateRecord ( record )
289
+ await reviewDomain . update ( {
290
+ filterCriteria : getScanCriteria ( {
291
+ id : reviewId ,
292
+ } ) ,
293
+ updateInput : updatedData
294
+ } )
327
295
328
296
// Push Review updated event to Bus API
329
297
// Request body for Posting to Bus API
@@ -340,7 +308,7 @@ async function _updateReview(authUser, reviewId, entity) {
340
308
updatedBy : authUser . handle || authUser . sub ,
341
309
reviewedDate : entity . reviewedDate || exist . reviewedDate || exist . created
342
310
} ,
343
- entity ,
311
+ updatedData ,
344
312
{
345
313
scoreCardId,
346
314
v5ScoreCardId
@@ -353,7 +321,7 @@ async function _updateReview(authUser, reviewId, entity) {
353
321
354
322
// Updating records in DynamoDB doesn't return any response
355
323
// Hence returning the response which will be in compliance with Swagger
356
- return _ . extend ( exist , entity , {
324
+ return _ . extend ( exist , updatedData , {
357
325
updated : currDate ,
358
326
updatedBy : authUser . handle || authUser . sub ,
359
327
reviewedDate : entity . reviewedDate || exist . reviewedDate || exist . created ,
@@ -446,15 +414,7 @@ async function deleteReview(reviewId) {
446
414
)
447
415
}
448
416
449
- // Filter used to delete the record
450
- const filter = {
451
- TableName : table ,
452
- Key : {
453
- id : reviewId
454
- }
455
- }
456
-
457
- await dbhelper . deleteRecord ( filter )
417
+ await reviewDomain . delete ( getLookupCriteria ( "id" , reviewId ) )
458
418
459
419
// Push Review deleted event to Bus API
460
420
// Request body for Posting to Bus API
0 commit comments