Skip to content

Commit ab71b37

Browse files
authored
Merge pull request #23 from imcaizheng/joi-schemas-allow-null
Update joi schemas to allow null values
2 parents 7baecca + a86c978 commit ab71b37

File tree

3 files changed

+22
-81
lines changed

3 files changed

+22
-81
lines changed

src/services/JobCandidateProcessorService.js

Lines changed: 4 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,10 @@ processCreate.schema = {
9797
userId: Joi.string().uuid().required(),
9898
createdAt: Joi.date().required(),
9999
createdBy: Joi.string().uuid().required(),
100+
updatedAt: Joi.date().allow(null),
101+
updatedBy: Joi.string().uuid().allow(null),
100102
status: Joi.jobCandidateStatus().required(),
101-
externalId: Joi.string(),
103+
externalId: Joi.string().allow(null),
102104
resume: Joi.string().uri()
103105
}).required()
104106
}).required(),
@@ -127,25 +129,7 @@ async function processUpdate (message, transactionId) {
127129
})
128130
}
129131

130-
processUpdate.schema = {
131-
message: Joi.object().keys({
132-
topic: Joi.string().required(),
133-
originator: Joi.string().required(),
134-
timestamp: Joi.date().required(),
135-
'mime-type': Joi.string().required(),
136-
payload: Joi.object().keys({
137-
id: Joi.string().uuid(),
138-
jobId: Joi.string().uuid(),
139-
userId: Joi.string().uuid(),
140-
status: Joi.jobCandidateStatus(),
141-
externalId: Joi.string(),
142-
resume: Joi.string().uri(),
143-
updatedAt: Joi.date(),
144-
updatedBy: Joi.string().uuid()
145-
}).required()
146-
}).required(),
147-
transactionId: Joi.string().required()
148-
}
132+
processUpdate.schema = processCreate.schema
149133

150134
/**
151135
* Process delete entity message

src/services/JobProcessorService.js

Lines changed: 10 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -69,18 +69,20 @@ processCreate.schema = {
6969
payload: Joi.object().keys({
7070
id: Joi.string().uuid().required(),
7171
projectId: Joi.number().integer().required(),
72-
externalId: Joi.string(),
73-
description: Joi.stringAllowEmpty(),
72+
externalId: Joi.string().allow(null),
73+
description: Joi.stringAllowEmpty().allow(null),
7474
title: Joi.title().required(),
75-
startDate: Joi.date(),
76-
endDate: Joi.date(),
75+
startDate: Joi.date().allow(null),
76+
endDate: Joi.date().allow(null),
7777
numPositions: Joi.number().integer().min(1).required(),
78-
resourceType: Joi.stringAllowEmpty(),
79-
rateType: Joi.rateType(),
80-
workload: Joi.workload(),
78+
resourceType: Joi.stringAllowEmpty().allow(null),
79+
rateType: Joi.rateType().allow(null),
80+
workload: Joi.workload().allow(null),
8181
skills: Joi.array().items(Joi.string().uuid()).required(),
8282
createdAt: Joi.date().required(),
8383
createdBy: Joi.string().uuid().required(),
84+
updatedAt: Joi.date().allow(null),
85+
updatedBy: Joi.string().uuid().allow(null),
8486
status: Joi.jobStatus().required()
8587
}).required()
8688
}).required(),
@@ -109,32 +111,7 @@ async function processUpdate (message, transactionId) {
109111
})
110112
}
111113

112-
processUpdate.schema = {
113-
message: Joi.object().keys({
114-
topic: Joi.string().required(),
115-
originator: Joi.string().required(),
116-
timestamp: Joi.date().required(),
117-
'mime-type': Joi.string().required(),
118-
payload: Joi.object().keys({
119-
id: Joi.string().uuid().required(),
120-
projectId: Joi.number().integer(),
121-
externalId: Joi.string(),
122-
description: Joi.stringAllowEmpty(),
123-
title: Joi.title(),
124-
startDate: Joi.date(),
125-
endDate: Joi.date(),
126-
numPositions: Joi.number().integer().min(1),
127-
resourceType: Joi.stringAllowEmpty(),
128-
rateType: Joi.rateType(),
129-
workload: Joi.workload(),
130-
skills: Joi.array().items(Joi.string().uuid()),
131-
status: Joi.jobStatus(),
132-
updatedAt: Joi.date(),
133-
updatedBy: Joi.string().uuid()
134-
}).required()
135-
}).required(),
136-
transactionId: Joi.string().required()
137-
}
114+
processUpdate.schema = processCreate.schema
138115

139116
/**
140117
* Process delete entity message

src/services/ResourceBookingProcessorService.js

Lines changed: 8 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,16 @@ processCreate.schema = {
3737
id: Joi.string().uuid().required(),
3838
projectId: Joi.number().integer().required(),
3939
userId: Joi.string().uuid().required(),
40-
jobId: Joi.string().uuid(),
41-
startDate: Joi.date(),
42-
endDate: Joi.date(),
43-
memberRate: Joi.number(),
44-
customerRate: Joi.number(),
40+
jobId: Joi.string().uuid().allow(null),
41+
startDate: Joi.date().allow(null),
42+
endDate: Joi.date().allow(null),
43+
memberRate: Joi.number().allow(null),
44+
customerRate: Joi.number().allow(null),
4545
rateType: Joi.rateType().required(),
4646
createdAt: Joi.date().required(),
4747
createdBy: Joi.string().uuid().required(),
48+
updatedAt: Joi.date().allow(null),
49+
updatedBy: Joi.string().uuid().allow(null),
4850
status: Joi.jobStatus().required()
4951
}).required()
5052
}).required(),
@@ -69,29 +71,7 @@ async function processUpdate (message, transactionId) {
6971
})
7072
}
7173

72-
processUpdate.schema = {
73-
message: Joi.object().keys({
74-
topic: Joi.string().required(),
75-
originator: Joi.string().required(),
76-
timestamp: Joi.date().required(),
77-
'mime-type': Joi.string().required(),
78-
payload: Joi.object().keys({
79-
id: Joi.string().uuid().required(),
80-
projectId: Joi.number().integer(),
81-
userId: Joi.string().uuid(),
82-
jobId: Joi.string().uuid(),
83-
startDate: Joi.date(),
84-
endDate: Joi.date(),
85-
memberRate: Joi.number(),
86-
customerRate: Joi.number(),
87-
rateType: Joi.rateType(),
88-
status: Joi.jobStatus(),
89-
updatedAt: Joi.date(),
90-
updatedBy: Joi.string().uuid()
91-
}).required()
92-
}).required(),
93-
transactionId: Joi.string().required()
94-
}
74+
processUpdate.schema = processCreate.schema
9575

9676
/**
9777
* Process delete entity message

0 commit comments

Comments
 (0)