summary refs log tree commit diff
path: root/util/src/models/BaseClass.ts
diff options
context:
space:
mode:
authorFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-08-22 12:41:21 +0200
committerFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-08-22 12:41:21 +0200
commitae2896fa6148cc1366573166368e157d6fa50b82 (patch)
treeb4fbe795d2ee0b4c3b0e21de525195a553fe48ee /util/src/models/BaseClass.ts
parent:construction: typeorm (diff)
downloadserver-ae2896fa6148cc1366573166368e157d6fa50b82.tar.xz
:construction: typeorm
Diffstat (limited to 'util/src/models/BaseClass.ts')
-rw-r--r--util/src/models/BaseClass.ts24
1 files changed, 13 insertions, 11 deletions
diff --git a/util/src/models/BaseClass.ts b/util/src/models/BaseClass.ts

index 78cd329c..d4f635f6 100644 --- a/util/src/models/BaseClass.ts +++ b/util/src/models/BaseClass.ts
@@ -1,22 +1,24 @@ import "reflect-metadata"; -import { BaseEntity, Column } from "typeorm"; +import { BaseEntity, BeforeInsert, BeforeUpdate, Column, PrimaryGeneratedColumn } from "typeorm"; +import { Snowflake } from "../util/Snowflake"; +import { IsString, validateOrReject } from "class-validator"; export class BaseClass extends BaseEntity { + @PrimaryGeneratedColumn() @Column() - id?: string; + @IsString() + id: string; - constructor(props?: any) { + constructor(props?: any, opts: { id?: string } = {}) { super(); - BaseClass.assign(props, this, "body."); + this.id = opts.id || Snowflake.generate(); + Object.defineProperties(this, props); } - private static assign(props: any, object: any, path?: string): any { - const expectedType = Reflect.getMetadata("design:type", object, props); - console.log(expectedType, object, props, path, typeof object); - - if (typeof object !== typeof props) throw new Error(`Property at ${path} must be`); - if (typeof object === "object") - return Object.keys(object).map((key) => BaseClass.assign(props[key], object[key], `${path}.${key}`)); + @BeforeUpdate() + @BeforeInsert() + async validate() { + await validateOrReject(this, {}); } }