Skip to content

Commit 327485f

Browse files
authored
Merge pull request #132 from meshde/review-status
Add Review Status
2 parents be4dcc3 + 0655716 commit 327485f

File tree

6 files changed

+50
-5
lines changed

6 files changed

+50
-5
lines changed

docs/Submission API.postman_collection.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -825,7 +825,7 @@
825825
],
826826
"body": {
827827
"mode": "raw",
828-
"raw": "{\n\t\"score\": 92.5,\n\t\"scoreCardId\": 123456789,\n\t\"submissionId\": \"{{submissionID}}\",\n\t\"typeId\": \"c56a4180-65aa-42ec-a945-5fd21dec0503\",\n\t\"reviewerId\": \"c56a4180-65aa-42ec-a945-5fd21d3d26f8\"\n}"
828+
"raw": "{\n\t\"score\": 92.5,\n\t\"scoreCardId\": 123456789,\n\t\"submissionId\": \"{{submissionID}}\",\n\t\"status\": \"queued\",\n\t\"typeId\": \"c56a4180-65aa-42ec-a945-5fd21dec0503\",\n\t\"reviewerId\": \"c56a4180-65aa-42ec-a945-5fd21d3d26f8\"\n}"
829829
},
830830
"url": {
831831
"raw": "{{URL}}/reviews",
@@ -1405,7 +1405,7 @@
14051405
],
14061406
"body": {
14071407
"mode": "raw",
1408-
"raw": "{\n\t\"score\": 90.5,\n\t\"scoreCardId\": 123456789,\n\t\"submissionId\": \"{{submissionID}}\",\n\t\"typeId\": \"c56a4180-65aa-42ec-a945-5fd21dec0503\",\n\t\"reviewerId\": \"c56a4180-65aa-42ec-a945-5fd21d3d26f8\"\n}"
1408+
"raw": "{\n\t\"score\": 90.5,\n\t\"scoreCardId\": 123456789,\n\t\"submissionId\": \"{{submissionID}}\",\n\t\"status\": \"completed\",\n\t\"typeId\": \"c56a4180-65aa-42ec-a945-5fd21dec0503\",\n\t\"reviewerId\": \"c56a4180-65aa-42ec-a945-5fd21d3d26f8\"\n}"
14091409
},
14101410
"url": {
14111411
"raw": "{{URL}}/reviews/{{reviewID}}",

docs/swagger.yaml

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ paths:
7474
- $ref: '#/parameters/filterSubmissionReviewReviewerId'
7575
- $ref: '#/parameters/filterSubmissionReviewScoreCardId'
7676
- $ref: '#/parameters/filterSubmissionReviewSubmissionId'
77+
- $ref: '#/parameters/filterSubmissionReviewStatus'
7778
- $ref: '#/parameters/filterSubmissionReviewSummationScoreCardId'
7879
- $ref: '#/parameters/filterSubmissionReviewSummationSubmissionId'
7980
- $ref: '#/parameters/filterSubmissionReviewSummationAggregateScore'
@@ -898,7 +899,7 @@ paths:
898899
description: |
899900
Get all reviews. Link headers are sent back and they have rel set to prev, next, first, last and contain the relevant URL.
900901
901-
Resulted collection of reviews can be filtered using filter parameters `score`, `typeId`, `reviewerId`, `scoreCardId` (all filter parameters are optional and combined by the logical operation `AND`).
902+
Resulted collection of reviews can be filtered using filter parameters `score`, `typeId`, `reviewerId`, `scoreCardId`, `status` (all filter parameters are optional and combined by the logical operation `AND`).
902903
903904
**Authorization:** Review is accessible by roles `admin` and `copilot`.
904905
tags:
@@ -915,6 +916,7 @@ paths:
915916
- $ref: '#/parameters/filterReviewReviewerId'
916917
- $ref: '#/parameters/filterReviewScoreCardId'
917918
- $ref: '#/parameters/filterReviewSubmissionId'
919+
- $ref: '#/parameters/filterReviewStatus'
918920
responses:
919921
200:
920922
description: OK - the request was successful, the resource are returned.
@@ -930,6 +932,7 @@ paths:
930932
reviewerId: 'c23a4180-65aa-42ec-a945-5fd21dec0503'
931933
scoreCardId: 123456789
932934
submissionId: 'd67a4180-65aa-42ec-a945-5fd21dec0503'
935+
status: 'queued'
933936
created: '2018-05-20T07:00:30.123Z'
934937
updated: '2018-06-01T07:36:28.178Z'
935938
createdBy: 'admin'
@@ -940,6 +943,7 @@ paths:
940943
reviewerId: 'c23a4180-65aa-42ec-a945-5fd21dec0503'
941944
scoreCardId: 123456789
942945
submissionId: 'd23a4180-65aa-42ec-a945-5fd21dec0503'
946+
status: 'completed'
943947
created: '2018-05-20T07:00:30.123Z'
944948
updated: '2018-06-01T07:36:28.178Z'
945949
createdBy: 'admin'
@@ -981,7 +985,7 @@ paths:
981985
description: |
982986
Get response status and headers information for the endpoint. Link headers are sent back and they have rel set to prev, next, first, last and contain the relevant URL.
983987
984-
Requested reviews can be filtered using filter parameters `score`, `typeId`, `reviewerId`, `scoreCardId` (all filter parameters are optional and combined by the logical operation `AND`).
988+
Requested reviews can be filtered using filter parameters `score`, `typeId`, `reviewerId`, `scoreCardId`, `status` (all filter parameters are optional and combined by the logical operation `AND`).
985989
986990
**Authorization:** Review is accessible by roles `admin` and `copilot`.
987991
tags:
@@ -995,6 +999,7 @@ paths:
995999
- $ref: '#/parameters/filterReviewTypeId'
9961000
- $ref: '#/parameters/filterReviewReviewerId'
9971001
- $ref: '#/parameters/filterReviewScoreCardId'
1002+
- $ref: '#/parameters/filterReviewStatus'
9981003
responses:
9991004
200:
10001005
description: OK - The request was successful.
@@ -1632,6 +1637,14 @@ parameters:
16321637
description: The submissionId filter of the reviews associated with the submission.
16331638
required: false
16341639
type: string
1640+
1641+
filterSubmissionReviewStatus:
1642+
in: query
1643+
name: review.status
1644+
description: The status of the reviews associated with the submission.
1645+
required: false
1646+
type: string
1647+
enum: [queued, completed]
16351648

16361649
filterSubmissionReviewSummationScoreCardId:
16371650
in: query
@@ -1733,6 +1746,14 @@ parameters:
17331746
required: false
17341747
type: string
17351748

1749+
filterReviewStatus:
1750+
in: query
1751+
name: status
1752+
description: The status of the review, whether it queued or has been completed.
1753+
required: false
1754+
type: string
1755+
enum: [queued, completed]
1756+
17361757
filterReviewTypeName:
17371758
in: query
17381759
name: name
@@ -1946,6 +1967,7 @@ definitions:
19461967
- reviewerId
19471968
- scoreCardId
19481969
- submissionId
1970+
- status
19491971
allOf:
19501972
- type: object
19511973
properties:
@@ -1982,6 +2004,11 @@ definitions:
19822004
type: string
19832005
description: The submission id.
19842006
example: 'a12bc180-65ab-42ec-a945-5fd2dec1567'
2007+
status:
2008+
type: string
2009+
enum: [queued, completed]
2010+
description: The status of the review, whether it is queued or has been completed.
2011+
example: 'queued'
19852012
metadata:
19862013
type: object
19872014
description: Review Metadata in JSON format
@@ -1995,6 +2022,7 @@ definitions:
19952022
- reviewerId
19962023
- scoreCardId
19972024
- submissionId
2025+
- status
19982026
allOf:
19992027
- $ref: '#/definitions/PartiallyReview'
20002028

src/bootstrap.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ joi.id = () => joi.number().integer().min(1)
1313
joi.score = () => joi.number()
1414
joi.pageSize = () => joi.number().integer().min(1).max(config.get('MAX_PAGE_SIZE'))
1515
joi.sortOrder = () => joi.string().valid('asc', 'desc', 'ASC', 'DESC')
16+
joi.reviewStatus = () => joi.string().valid('queued', 'completed')
1617

1718
function buildServices (dir) {
1819
const files = fs.readdirSync(dir)

src/services/ReviewService.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ const listReviewsQuerySchema = {
8888
reviewerId: joi.alternatives().try(joi.id(), joi.string().uuid()),
8989
scoreCardId: joi.id(),
9090
submissionId: joi.string().uuid(),
91+
status: joi.reviewStatus(),
9192
page: joi.id(),
9293
perPage: joi.pageSize(),
9394
orderBy: joi.sortOrder()
@@ -159,6 +160,7 @@ createReview.schema = {
159160
.error(errors => ({message: '"reviewerId" must be a number or a string'})),
160161
scoreCardId: joi.id().required(),
161162
submissionId: joi.string().uuid().required(),
163+
status: joi.reviewStatus().required(),
162164
metadata: joi.object()
163165
}).required()
164166
}
@@ -189,16 +191,20 @@ function * _updateReview (authUser, reviewId, entity) {
189191
'id': reviewId
190192
},
191193
UpdateExpression: `set score = :s, scoreCardId = :sc, submissionId = :su,
192-
typeId = :t, reviewerId = :r,
194+
typeId = :t, reviewerId = :r, #st = :st,
193195
updated = :ua, updatedBy = :ub`,
194196
ExpressionAttributeValues: {
195197
':s': entity.score || exist.score,
196198
':sc': entity.scoreCardId || exist.scoreCardId,
197199
':su': entity.submissionId || exist.submissionId,
198200
':t': entity.typeId || exist.typeId,
199201
':r': entity.reviewerId || exist.reviewerId,
202+
':st': entity.status || exist.status,
200203
':ua': currDate,
201204
':ub': authUser.handle || authUser.sub
205+
},
206+
ExpressionAttributeNames: {
207+
'#st': 'status'
202208
}
203209
}
204210

@@ -256,6 +262,7 @@ updateReview.schema = {
256262
reviewerId: joi.alternatives().try(joi.id(), joi.string().uuid()).required(),
257263
scoreCardId: joi.id().required(),
258264
submissionId: joi.string().uuid().required(),
265+
status: joi.reviewStatus().required(),
259266
metadata: joi.object()
260267
}).required()
261268
}
@@ -280,6 +287,7 @@ patchReview.schema = {
280287
reviewerId: joi.alternatives().try(joi.id(), joi.string().uuid()),
281288
scoreCardId: joi.id(),
282289
submissionId: joi.string().uuid(),
290+
status: joi.reviewStatus(),
283291
metadata: joi.object()
284292
})
285293
}

src/services/SubmissionService.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ const listSubmissionsQuerySchema = {
207207
'review.reviewerId': joi.string().uuid(),
208208
'review.scoreCardId': joi.id(),
209209
'review.submissionId': joi.string().uuid(),
210+
'review.status': joi.reviewStatus(),
210211
'reviewSummation.scoreCardId': joi.id(),
211212
'reviewSummation.submissionId': joi.string().uuid(),
212213
'reviewSummation.aggregateScore': joi.score(),

test/common/testData.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,7 @@ const testReview = {
252252
reviewerId: 'c23a4180-65aa-42ec-a945-5fd21dec0503',
253253
submissionId: 'a12a4180-65aa-42ec-a945-5fd21dec0501',
254254
scoreCardId: 123456789,
255+
status: 'queued',
255256
typeId: 'c56a4180-65aa-42ec-a945-5fd21dec0501',
256257
created: '2018-05-20T07:00:30.123Z',
257258
updated: '2018-06-01T07:36:28.178Z',
@@ -267,6 +268,7 @@ const testReviewPatch = {
267268
reviewerId: 'c23a4180-65aa-42ec-a945-5fd21dec0503',
268269
submissionId: 'a12a4180-65aa-42ec-a945-5fd21dec0501',
269270
scoreCardId: 123456789,
271+
status: 'queued',
270272
typeId: 'c56a4180-65aa-42ec-a945-5fd21dec0501',
271273
created: '2018-05-20T07:00:30.123Z',
272274
updated: '2018-06-01T07:36:28.178Z',
@@ -289,6 +291,7 @@ const testReviewES = {
289291
reviewerId: 'c23a4180-65aa-42ec-a945-5fd21dec0503',
290292
submissionId: 'a12a4180-65aa-42ec-a945-5fd21dec0501',
291293
scoreCardId: 123456789,
294+
status: 'queued',
292295
typeId: 'c56a4180-65aa-42ec-a945-5fd21dec0501',
293296
created: '2018-05-20T07:00:30.123Z',
294297
updated: '2018-06-01T07:36:28.178Z',
@@ -311,6 +314,7 @@ const testReviewsES = {
311314
{ score: 95.5,
312315
reviewerId: 'c23a4180-65aa-42ec-a945-5fd21dec0503',
313316
submissionId: 'a12a4180-65aa-42ec-a945-5fd21dec0501',
317+
status: 'queued',
314318
updatedBy: 'admin',
315319
createdBy: 'admin',
316320
scoreCardId: 123456789,
@@ -329,6 +333,7 @@ const testReviewsES = {
329333
updatedBy: 'admin',
330334
createdBy: 'admin',
331335
scoreCardId: 123456789,
336+
status: 'queued',
332337
created: '2018-05-20T07:00:30.123Z',
333338
typeId: 'c56a4180-65aa-42ec-a945-5fd21dec0503',
334339
id: 'd24d4180-65aa-42ec-a945-5fd21dec0504',
@@ -344,6 +349,7 @@ const testReviewsES = {
344349
updatedBy: 'admin',
345350
createdBy: 'admin',
346351
scoreCardId: 123456789,
352+
status: 'queued',
347353
created: '2018-05-20T07:00:30.123Z',
348354
typeId: 'c56a4180-65aa-42ec-a945-5fd21dec0503',
349355
id: 'd24d4180-65aa-42ec-a945-5fd21dec0502',
@@ -359,6 +365,7 @@ const testReviewsES = {
359365
updatedBy: 'admin',
360366
createdBy: 'admin',
361367
scoreCardId: 123456789,
368+
status: 'queued',
362369
created: '2018-05-20T07:00:30.123Z',
363370
typeId: 'c56a4180-65aa-42ec-a945-5fd21dec0503',
364371
id: 'd24d4180-65aa-42ec-a945-5fd21dec0503',

0 commit comments

Comments
 (0)