Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit d2ce4a9

Browse files
authoredOct 11, 2021
Merge pull request #104 from topcoder-platform/dev
[PROD] Next Release
2 parents 4bd7b29 + 7901409 commit d2ce4a9

File tree

7 files changed

+127
-112
lines changed

7 files changed

+127
-112
lines changed
 

‎.circleci/config.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,6 @@ workflows:
7171
branches:
7272
only:
7373
- dev
74-
- dev-circleci
75-
- feature/shapeup4-cqrs-update2
7674

7775
# Production builds are exectuted only on tagged commits to the
7876
# master branch.

‎package-lock.json

Lines changed: 43 additions & 34 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,13 @@
1818
"superagent": "^5.1.0"
1919
},
2020
"dependencies": {
21-
"@hapi/joi": "^15.1.0",
21+
"@joi/date": "^2.1.0",
2222
"async-mutex": "^0.2.4",
2323
"bluebird": "^3.5.5",
2424
"config": "^3.1.0",
2525
"dotenv": "^10.0.0",
2626
"get-parameter-names": "^0.3.0",
27+
"joi": "^17.4.2",
2728
"lodash": "^4.17.20",
2829
"no-kafka": "^3.4.3",
2930
"tc-core-library-js": "^2.4.1",

‎src/bootstrap.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const Joi = require('@hapi/joi')
1+
const Joi = require('joi')
22
const config = require('config')
33
const constants = require('./common/constants')
44

@@ -8,6 +8,7 @@ Joi.rateType = () => Joi.string().valid('hourly', 'daily', 'weekly', 'monthly',
88
Joi.jobStatus = () => Joi.string().valid('sourcing', 'in-review', 'assigned', 'closed', 'cancelled')
99
Joi.jobCandidateStatus = () => Joi.string().valid('open', 'placed', 'selected', 'client rejected - screening', 'client rejected - interview', 'rejected - other', 'cancelled', 'interview', 'topcoder-rejected', 'applied', 'rejected-pre-screen', 'skills-test', 'skills-test', 'phone-screen', 'job-closed', 'offered', 'withdrawn', 'withdrawn-prescreen')
1010
Joi.workload = () => Joi.string().valid('full-time', 'fractional')
11+
Joi.jobTag = () => Joi.string().valid('New', '$$$', 'Hot').allow('')
1112
Joi.title = () => Joi.string().max(128)
1213
// Empty string is not allowed by Joi by default and must be enabled with allow('').
1314
// See https://joi.dev/api/?v=17.3.0#string fro details why it's like this.

‎src/common/logger.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
*/
44

55
const _ = require('lodash')
6-
const Joi = require('@hapi/joi')
6+
const Joi = require('joi')
77
const util = require('util')
88
const config = require('config')
99
const getParams = require('get-parameter-names')

‎src/services/JobCandidateProcessorService.js

Lines changed: 30 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* Jobcandidate Processor Service
33
*/
44

5-
const Joi = require('@hapi/joi')
5+
const Joi = require('joi')
66
const logger = require('../common/logger')
77
const helper = require('../common/helper')
88
const constants = require('../common/constants')
@@ -74,34 +74,35 @@ async function processUpdate (message, transactionId) {
7474
})
7575
}
7676

77-
processUpdate.schema = {
78-
message: Joi.object()
79-
.keys({
80-
topic: Joi.string().required(),
81-
originator: Joi.string().required(),
82-
timestamp: Joi.date().required(),
83-
'mime-type': Joi.string().required(),
84-
key: Joi.string().allow(null),
85-
payload: Joi.object()
86-
.keys({
87-
id: Joi.string().uuid().required(),
88-
jobId: Joi.string().uuid().required(),
89-
userId: Joi.string().uuid().required(),
90-
createdAt: Joi.date().required(),
91-
createdBy: Joi.string().uuid().required(),
92-
updatedAt: Joi.date().allow(null),
93-
viewedByCustomer: Joi.boolean().required(),
94-
updatedBy: Joi.string().uuid().allow(null),
95-
status: Joi.jobCandidateStatus().required(),
96-
externalId: Joi.string().allow(null),
97-
resume: Joi.string().uri().allow(null).allow(''),
98-
remark: Joi.stringAllowEmpty().allow(null)
99-
})
100-
.required()
101-
})
102-
.required(),
103-
transactionId: Joi.string().required()
104-
}
77+
processUpdate.schema = Joi.object()
78+
.keys({
79+
message: Joi.object()
80+
.keys({
81+
topic: Joi.string().required(),
82+
originator: Joi.string().required(),
83+
timestamp: Joi.date().required(),
84+
'mime-type': Joi.string().required(),
85+
key: Joi.string().allow(null),
86+
payload: Joi.object()
87+
.keys({
88+
id: Joi.string().uuid().required(),
89+
jobId: Joi.string().uuid().required(),
90+
userId: Joi.string().uuid().required(),
91+
createdAt: Joi.date().required(),
92+
createdBy: Joi.string().uuid().required(),
93+
updatedAt: Joi.date().allow(null),
94+
viewedByCustomer: Joi.boolean().required(),
95+
updatedBy: Joi.string().uuid().allow(null),
96+
status: Joi.jobCandidateStatus().required(),
97+
externalId: Joi.string().allow(null),
98+
resume: Joi.string().uri().allow(null).allow(''),
99+
remark: Joi.stringAllowEmpty().allow(null)
100+
})
101+
.required()
102+
})
103+
.required(),
104+
transactionId: Joi.string().required()
105+
})
105106

106107
module.exports = {
107108
processUpdate

‎src/services/JobProcessorService.js

Lines changed: 49 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* Job Processor Service
33
*/
44

5-
const Joi = require('@hapi/joi')
5+
const Joi = require('joi').extend(require('@joi/date'))
66
const logger = require('../common/logger')
77
const helper = require('../common/helper')
88
const constants = require('../common/constants')
@@ -50,49 +50,54 @@ async function processCreate (message, transactionId) {
5050
})
5151
}
5252

53-
processCreate.schema = {
54-
message: Joi.object()
55-
.keys({
56-
topic: Joi.string().required(),
57-
originator: Joi.string().required(),
58-
timestamp: Joi.date().required(),
59-
'mime-type': Joi.string().required(),
60-
payload: Joi.object()
61-
.keys({
62-
id: Joi.string().uuid().required(),
63-
projectId: Joi.number().integer().required(),
64-
externalId: Joi.string().allow(null),
65-
description: Joi.stringAllowEmpty().allow(null),
66-
title: Joi.title().required(),
67-
startDate: Joi.date().allow(null),
68-
duration: Joi.number().integer().min(1).allow(null),
69-
numPositions: Joi.number().integer().min(1).required(),
70-
resourceType: Joi.stringAllowEmpty().allow(null),
71-
rateType: Joi.rateType().allow(null),
72-
workload: Joi.workload().allow(null),
73-
skills: Joi.array().items(Joi.string().uuid()).required(),
74-
roles: Joi.array().items(Joi.string().uuid()).allow(null),
75-
createdAt: Joi.date().required(),
76-
createdBy: Joi.string().uuid().required(),
77-
updatedAt: Joi.date().allow(null),
78-
updatedBy: Joi.string().uuid().allow(null),
79-
status: Joi.jobStatus().required(),
80-
isApplicationPageActive: Joi.boolean().required(),
81-
minSalary: Joi.number().integer().allow(null),
82-
maxSalary: Joi.number().integer().allow(null),
83-
hoursPerWeek: Joi.number().integer().allow(null),
84-
jobLocation: Joi.stringAllowEmpty().allow(null),
85-
jobTimezone: Joi.stringAllowEmpty().allow(null),
86-
currency: Joi.stringAllowEmpty().allow(null),
87-
roleIds: Joi.array()
88-
.items(Joi.string().uuid().required())
89-
.allow(null)
90-
})
91-
.required()
92-
})
93-
.required(),
94-
transactionId: Joi.string().required()
95-
}
53+
processCreate.schema = Joi.object()
54+
.keys({
55+
message: Joi.object()
56+
.keys({
57+
topic: Joi.string().required(),
58+
originator: Joi.string().required(),
59+
timestamp: Joi.date().required(),
60+
'mime-type': Joi.string().required(),
61+
payload: Joi.object()
62+
.keys({
63+
id: Joi.string().uuid().required(),
64+
projectId: Joi.number().integer().required(),
65+
externalId: Joi.string().allow(null),
66+
description: Joi.stringAllowEmpty().allow(null),
67+
title: Joi.title().required(),
68+
startDate: Joi.date().format('YYYY-MM-DD').allow(null),
69+
duration: Joi.number().integer().min(1).allow(null),
70+
numPositions: Joi.number().integer().min(1).required(),
71+
resourceType: Joi.stringAllowEmpty().allow(null),
72+
rateType: Joi.rateType().allow(null),
73+
workload: Joi.workload().allow(null),
74+
skills: Joi.array().items(Joi.string().uuid()).required(),
75+
roles: Joi.array().items(Joi.string().uuid()).allow(null),
76+
createdAt: Joi.date().required(),
77+
createdBy: Joi.string().uuid().required(),
78+
updatedAt: Joi.date().allow(null),
79+
updatedBy: Joi.string().uuid().allow(null),
80+
status: Joi.jobStatus().required(),
81+
isApplicationPageActive: Joi.boolean().required(),
82+
minSalary: Joi.number().integer().allow(null),
83+
maxSalary: Joi.number().integer().allow(null),
84+
hoursPerWeek: Joi.number().integer().allow(null),
85+
jobLocation: Joi.stringAllowEmpty().allow(null),
86+
jobTimezone: Joi.stringAllowEmpty().allow(null),
87+
currency: Joi.stringAllowEmpty().allow(null),
88+
roleIds: Joi.array()
89+
.items(Joi.string().uuid().required())
90+
.allow(null),
91+
showInHotList: Joi.boolean().default(false),
92+
featured: Joi.boolean().default(false),
93+
hotListExcerpt: Joi.stringAllowEmpty().default(''),
94+
jobTag: Joi.jobTag().default('')
95+
})
96+
.required()
97+
})
98+
.required(),
99+
transactionId: Joi.string().required()
100+
})
96101

97102
/**
98103
* Process update entity message

0 commit comments

Comments
 (0)
Please sign in to comment.