Skip to content

Commit 5b284ec

Browse files
committed
feat: add support for constraints
Signed-off-by: Rakib Ansary <rakibansary@gmail.com>
1 parent a8d2143 commit 5b284ec

File tree

3 files changed

+45
-32
lines changed

3 files changed

+45
-32
lines changed

.circleci/config.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ workflows:
7272
branches:
7373
only:
7474
- develop
75+
- PLAT-2032
7576

7677
# Production builds are exectuted only on tagged commits to the
7778
# master branch.

src/services/ChallengeService.js

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1070,7 +1070,11 @@ createChallenge.schema = {
10701070
timelineTemplateId: Joi.string(), // Joi.optionalId(),
10711071
phases: Joi.array().items(Joi.object().keys({
10721072
phaseId: Joi.id(),
1073-
duration: Joi.number().integer().min(0)
1073+
duration: Joi.number().integer().min(0),
1074+
constraints: Joi.object().keys({
1075+
name: Joi.string(),
1076+
value: Joi.number().integer().min(0)
1077+
}).optional()
10741078
})),
10751079
events: Joi.array().items(Joi.object().keys({
10761080
id: Joi.number().required(),
@@ -2026,7 +2030,7 @@ function sanitizeChallenge (challenge) {
20262030
sanitized.metadata = _.map(challenge.metadata, meta => _.pick(meta, ['name', 'value']))
20272031
}
20282032
if (challenge.phases) {
2029-
sanitized.phases = _.map(challenge.phases, phase => _.pick(phase, ['phaseId', 'duration', 'isOpen', 'actualEndDate', 'scheduledStartDate']))
2033+
sanitized.phases = _.map(challenge.phases, phase => _.pick(phase, ['phaseId', 'duration', 'isOpen', 'actualEndDate', 'scheduledStartDate', 'constraints']))
20302034
}
20312035
if (challenge.prizeSets) {
20322036
sanitized.prizeSets = _.map(challenge.prizeSets, prizeSet => ({
@@ -2110,7 +2114,11 @@ fullyUpdateChallenge.schema = {
21102114
duration: Joi.number().integer().min(0),
21112115
isOpen: Joi.boolean(),
21122116
actualEndDate: Joi.date().allow(null),
2113-
scheduledStartDate: Joi.date().allow(null)
2117+
scheduledStartDate: Joi.date().allow(null),
2118+
constraints: Joi.array().items(Joi.object().keys({
2119+
name: Joi.string(),
2120+
value: Joi.number().integer().min(0)
2121+
}).optional()).optional()
21142122
}).unknown(true)),
21152123
prizeSets: Joi.array().items(Joi.object().keys({
21162124
type: Joi.string().valid(_.values(constants.prizeSetTypes)).required(),
@@ -2218,7 +2226,11 @@ partiallyUpdateChallenge.schema = {
22182226
duration: Joi.number().integer().min(0),
22192227
isOpen: Joi.boolean(),
22202228
actualEndDate: Joi.date().allow(null),
2221-
scheduledStartDate: Joi.date().allow(null)
2229+
scheduledStartDate: Joi.date().allow(null),
2230+
constraints: Joi.array().items(Joi.object().keys({
2231+
name: Joi.string(),
2232+
value: Joi.number().integer().min(0)
2233+
}).optional()).optional()
22222234
}).unknown(true)).min(1),
22232235
events: Joi.array().items(Joi.object().keys({
22242236
id: Joi.number().required(),

yarn.lock

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@
33

44

55
"@aws-sdk/service-error-classification@^3.4.1":
6-
version "3.229.0"
7-
resolved "https://registry.yarnpkg.com/@aws-sdk/service-error-classification/-/service-error-classification-3.229.0.tgz#768f1eb92775ca2cc99c6451a2303a0008a28fc1"
8-
integrity sha512-dnzWWQ0/NoWMUZ5C0DW3dPm0wC1O76Y/SpKbuJzWPkx1EYy6r8p32Ly4D9vUzrKDbRGf48YHIF2kOkBmu21CLg==
6+
version "3.254.0"
7+
resolved "https://registry.yarnpkg.com/@aws-sdk/service-error-classification/-/service-error-classification-3.254.0.tgz#1cf2a2e79fd73d48e751207e25527988dd6716d1"
8+
integrity sha512-8GHqMJBBF9yoMBG/Nf9PusUSMFjG8ygps/cSJPlgcG2vbFn8BCdBZVc4ptXqICZUnBB/6lrxy8nCmNUaru48jg==
99

1010
"@aws-sdk/types@^3.4.1":
11-
version "3.226.0"
12-
resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.226.0.tgz#3dba2ba223fbb8ac1ebc84de0e036ce69a81d469"
13-
integrity sha512-MmmNHrWeO4man7wpOwrAhXlevqtOV9ZLcH4RhnG5LmRce0RFOApx24HoKENfFCcOyCm5LQBlsXCqi0dZWDWU0A==
11+
version "3.254.0"
12+
resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.254.0.tgz#760b4a876efa2edcec191dd8b18b989fa717a42e"
13+
integrity sha512-xDEDk6ZAGFO0URPgB6R2mvQANYlojHLjLC9zzOzl07F+uqYS30yZDIg4UFcqPt/x48v7mxlKZpbaZgYI2ZLgGA==
1414
dependencies:
1515
tslib "^2.3.1"
1616

@@ -76,10 +76,10 @@
7676
chalk "^2.0.0"
7777
js-tokens "^4.0.0"
7878

79-
"@babel/parser@^7.20.7", "@babel/parser@^7.4.3":
80-
version "7.20.7"
81-
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.7.tgz#66fe23b3c8569220817d5feb8b9dcdc95bb4f71b"
82-
integrity sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==
79+
"@babel/parser@^7.20.13", "@babel/parser@^7.20.7", "@babel/parser@^7.4.3":
80+
version "7.20.13"
81+
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.13.tgz#ddf1eb5a813588d2fb1692b70c6fce75b945c088"
82+
integrity sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==
8383

8484
"@babel/template@^7.18.10", "@babel/template@^7.4.0":
8585
version "7.20.7"
@@ -91,17 +91,17 @@
9191
"@babel/types" "^7.20.7"
9292

9393
"@babel/traverse@^7.4.3":
94-
version "7.20.12"
95-
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.12.tgz#7f0f787b3a67ca4475adef1f56cb94f6abd4a4b5"
96-
integrity sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ==
94+
version "7.20.13"
95+
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.13.tgz#817c1ba13d11accca89478bd5481b2d168d07473"
96+
integrity sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==
9797
dependencies:
9898
"@babel/code-frame" "^7.18.6"
9999
"@babel/generator" "^7.20.7"
100100
"@babel/helper-environment-visitor" "^7.18.9"
101101
"@babel/helper-function-name" "^7.19.0"
102102
"@babel/helper-hoist-variables" "^7.18.6"
103103
"@babel/helper-split-export-declaration" "^7.18.6"
104-
"@babel/parser" "^7.20.7"
104+
"@babel/parser" "^7.20.13"
105105
"@babel/types" "^7.20.7"
106106
debug "^4.1.0"
107107
globals "^11.1.0"
@@ -479,9 +479,9 @@ aws-sdk@2.395.0:
479479
xml2js "0.4.19"
480480

481481
aws-sdk@^2.1145.0:
482-
version "2.1295.0"
483-
resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1295.0.tgz#8ca19c5b9c7740e1f6ad95096feddcd7ca3df301"
484-
integrity sha512-HVYoFCyfiL8gzL/c0lSRTg8tWBLfqAEDfwzGe338ww/LahpmC6C07S71SBBIvtGq3dpd7IwEobAbubZDijrA0Q==
482+
version "2.1299.0"
483+
resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1299.0.tgz#493254104af5b9aaee0d7cd9150611d137e4f205"
484+
integrity sha512-xTh6pmCUEJljkFfTM3sE8UozDxal80uX/5WZl8GcjQ+NbrGeQEdvL6wFWBwEEVbhR0VBVuU37cKPuQlfENbRYA==
485485
dependencies:
486486
buffer "4.9.2"
487487
events "1.1.1"
@@ -894,11 +894,11 @@ concat-map@0.0.1:
894894
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
895895

896896
config@^3.0.1:
897-
version "3.3.8"
898-
resolved "https://registry.yarnpkg.com/config/-/config-3.3.8.tgz#14ef7aef22af25877fdaee696ec64d761feb7be0"
899-
integrity sha512-rFzF6VESOdp7wAXFlB9IOZI4ouL05g3A03v2eRcTHj2JBQaTNJ40zhAUl5wRbWHqLZ+uqp/7OE0BWWtAVgrong==
897+
version "3.3.9"
898+
resolved "https://registry.yarnpkg.com/config/-/config-3.3.9.tgz#27fae95b43e0e1d5723e54143c090954d8e49572"
899+
integrity sha512-G17nfe+cY7kR0wVpc49NCYvNtelm/pPy8czHoFkAgtV1lkmcp7DHtWCdDu+C9Z7gb2WVqa9Tm3uF9aKaPbCfhg==
900900
dependencies:
901-
json5 "^2.2.1"
901+
json5 "^2.2.3"
902902

903903
contains-path@^0.1.0:
904904
version "0.1.0"
@@ -1777,9 +1777,9 @@ get-func-name@^2.0.0:
17771777
integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==
17781778

17791779
get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3:
1780-
version "1.1.3"
1781-
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385"
1782-
integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==
1780+
version "1.2.0"
1781+
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f"
1782+
integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==
17831783
dependencies:
17841784
function-bind "^1.1.1"
17851785
has "^1.0.3"
@@ -2441,7 +2441,7 @@ json-stringify-safe@5.0.1, json-stringify-safe@~5.0.1:
24412441
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
24422442
integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==
24432443

2444-
json5@^2.2.1:
2444+
json5@^2.2.3:
24452445
version "2.2.3"
24462446
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
24472447
integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
@@ -3299,9 +3299,9 @@ punycode@1.3.2:
32993299
integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==
33003300

33013301
punycode@2.x.x, punycode@^2.1.0, punycode@^2.1.1:
3302-
version "2.2.0"
3303-
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.2.0.tgz#2092cc57cd2582c38e4e7e8bb869dc8d3148bc74"
3304-
integrity sha512-LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw==
3302+
version "2.3.0"
3303+
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f"
3304+
integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==
33053305

33063306
q@1.5.1:
33073307
version "1.5.1"

0 commit comments

Comments
 (0)