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; | |