From 2e524eabd368f263c0ed91a9ef2331a7805b0d46 Mon Sep 17 00:00:00 2001 From: Faruk AYDIN Date: Wed, 6 Oct 2021 23:40:14 +0200 Subject: [PATCH] feat: Introduce base model to implement created_at & updated_at logic --- packages/backend/src/models/base.ts | 21 +++++++++++++++++++++ packages/backend/src/models/user.ts | 7 ++++--- 2 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 packages/backend/src/models/base.ts diff --git a/packages/backend/src/models/base.ts b/packages/backend/src/models/base.ts new file mode 100644 index 00000000..d2913657 --- /dev/null +++ b/packages/backend/src/models/base.ts @@ -0,0 +1,21 @@ +import { Model, QueryContext, ModelOptions } from 'objection'; + +class Base extends Model { + created_at!: string; + updated_at!: string; + + async $beforeInsert(queryContext: QueryContext) { + await super.$beforeInsert(queryContext); + + this.created_at = new Date().toISOString(); + this.updated_at = new Date().toISOString(); + } + + async $beforeUpdate(opt: ModelOptions, queryContext: QueryContext) { + await super.$beforeUpdate(opt, queryContext); + + this.updated_at = new Date().toISOString(); + } +} + +export default Base; diff --git a/packages/backend/src/models/user.ts b/packages/backend/src/models/user.ts index 6e360a53..7b9df512 100644 --- a/packages/backend/src/models/user.ts +++ b/packages/backend/src/models/user.ts @@ -1,7 +1,8 @@ -import { Model, QueryContext, ModelOptions } from 'objection'; +import { QueryContext, ModelOptions } from 'objection'; +import Base from './base' import bcrypt from 'bcrypt'; -class User extends Model { +class User extends Base { id!: number email!: string password!: string @@ -14,7 +15,7 @@ class User extends Model { properties: { id: { type: 'integer' }, - email: { type: 'email', minLength: 1, maxLength: 255 }, + email: { type: 'string', format: 'email', minLength: 1, maxLength: 255 }, password: { type: 'string', minLength: 1, maxLength: 255 }, } }