I'm defining some routing schemes for fastify. I would like to reuse the code of some schema by combining them together without making redundancy. How can I combine two patterns into one?
const Dataset = S.object()
.prop('dataset',
S.string().enum(datasetsNames)
)
.default('default')
.required();
const Locations = S.object()
.prop('locations', S.string())
const CombinedParams = S.object()//...COMBINE Locations and Dataset...???
const schemas = {
schemaDatasetParams: {
description: 'schema having only Dataset',
query: ...,
params: Dataset,
},
schemaDatasetLocationsParams: {
description: 'schema having a comination of Locations and Dataset',
query: ...,
params: CombinedParams
}
}
Something like this?
const schema1 = S.object()
.additionalProperties(false)
.prop('name', S.string().minLength(2))
.prop('email', S.string().format(S.FORMATS.EMAIL))
.prop('password', S.string().minLength(6))
.prop('userRoles', S.array().items(S.number()).minItems(1));
const schema2 = S.object().prop('id', S.number()).required();
const combinedSchema = schema1.without(['password']).extend(schema2);