41 lines
915 B
JavaScript
41 lines
915 B
JavaScript
import { AjvValidator, Model, snakeCaseMappers } from 'objection';
|
|
import addFormats from 'ajv-formats';
|
|
|
|
import ExtendedQueryBuilder from './query-builder.js';
|
|
|
|
class Base extends Model {
|
|
static QueryBuilder = ExtendedQueryBuilder;
|
|
|
|
static get columnNameMappers() {
|
|
return snakeCaseMappers();
|
|
}
|
|
|
|
static createValidator() {
|
|
return new AjvValidator({
|
|
onCreateAjv: (ajv) => {
|
|
addFormats.default(ajv);
|
|
},
|
|
options: {
|
|
allErrors: true,
|
|
validateSchema: true,
|
|
ownProperties: true,
|
|
},
|
|
});
|
|
}
|
|
|
|
async $beforeInsert(queryContext) {
|
|
await super.$beforeInsert(queryContext);
|
|
|
|
this.createdAt = new Date().toISOString();
|
|
this.updatedAt = new Date().toISOString();
|
|
}
|
|
|
|
async $beforeUpdate(opts, queryContext) {
|
|
this.updatedAt = new Date().toISOString();
|
|
|
|
await super.$beforeUpdate(opts, queryContext);
|
|
}
|
|
}
|
|
|
|
export default Base;
|