@kitmi/data
Version:
Jacaranda Framework Data Access Model
46 lines (42 loc) • 1.66 kB
JavaScript
import { _, quote } from '@kitmi/utils';
import { ValidationError } from '@kitmi/types';
import Rules from '../Rules';
/**
* A rule specifies at least one field not null, e.g. email or mobile.
* @module EntityFeatureRuntime_AtLeastOneNotNull
*/
export default {
[Rules.RULE_BEFORE_CREATE]: (feature, entityModel, context) => {
_.each(feature, (item) => {
if (_.every(item, (fieldName) => context.latest[fieldName] == null)) {
throw new ValidationError(
`At least one of these fields ${item.map((f) => quote(f)).join(', ')} should not be null.`,
{
entity: entityModel.meta.name,
fields: feature,
}
);
}
});
},
[Rules.RULE_BEFORE_UPDATE]: (feature, entityModel, context) => {
context.options.$logicalDeletion ||
_.each(feature, (item) => {
if (
_.every(item, (fieldName) =>
fieldName in context.latest
? context.latest[fieldName] == null
: context.existing && context.existing[fieldName] == null
)
) {
throw new ValidationError(
`At least one of these fields ${item.map((f) => quote(f)).join(', ')} should not be null.`,
{
entity: entityModel.meta.name,
fields: feature,
}
);
}
});
},
};