diff --git a/src/entity/application.ts b/src/entity/application.ts new file mode 100644 index 0000000..16ca0d7 --- /dev/null +++ b/src/entity/application.ts @@ -0,0 +1,36 @@ +import { Entity, Column, CreateDateColumn, UpdateDateColumn, DeleteDateColumn, Index, PrimaryColumn } from 'typeorm'; + +import { Status } from '../types/status'; + +@Entity('application') +export class Application { + @PrimaryColumn({ + nullable: false, + length: 32 + }) + id: string; + + @Column({ + nullable: false, + length: 256 + }) + name: string; + + @Column({ + nullable: false, + length: 64 + }) + status: Status; + + @Column() + @CreateDateColumn() + created_at: Date; + + @Column({ nullable: true }) + @UpdateDateColumn() + updated_at: Date; + + @Column({ nullable: true }) + @DeleteDateColumn() + deleted_at: Date; +} \ No newline at end of file diff --git a/src/entity/menu.ts b/src/entity/menu.ts index 9dc1aa5..70958e6 100644 --- a/src/entity/menu.ts +++ b/src/entity/menu.ts @@ -1,12 +1,17 @@ -import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, DeleteDateColumn, Index } from 'typeorm'; +import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, DeleteDateColumn, JoinColumn, ManyToOne } from 'typeorm'; import { Status } from '../types/status'; +import { Application } from './application'; @Entity('menus') export class Menu { @PrimaryGeneratedColumn('uuid') id: string; + @ManyToOne(() => Application, { onDelete: "RESTRICT" }) + @JoinColumn({ name: 'application' }) + application: Application + @Column({ nullable: false, length: 128 diff --git a/src/entity/user_activity.ts b/src/entity/user_activity.ts index 31fd37d..5ca0a97 100644 --- a/src/entity/user_activity.ts +++ b/src/entity/user_activity.ts @@ -1,12 +1,17 @@ -import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, DeleteDateColumn, Index } from 'typeorm'; +import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, DeleteDateColumn, Index, JoinColumn, ManyToOne } from 'typeorm'; import { ActivityType } from '../types/action'; +import { Application } from './application'; @Entity('user_activities') export class UserActivity { @PrimaryGeneratedColumn('uuid') id: string; + @ManyToOne(() => Application, { onDelete: "RESTRICT" }) + @JoinColumn({ name: 'application' }) + application: Application + @Index() @Column({ type: 'uuid' diff --git a/src/entity/users_roles.ts b/src/entity/users_roles.ts index 4893d54..940fd76 100644 --- a/src/entity/users_roles.ts +++ b/src/entity/users_roles.ts @@ -1,12 +1,17 @@ -import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, DeleteDateColumn } from 'typeorm'; +import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, DeleteDateColumn, JoinColumn, ManyToOne } from 'typeorm'; import { Status } from '../types/status'; +import { Application } from './application'; @Entity('user_roles') export class UserRole { @PrimaryGeneratedColumn('uuid') id: string; + @ManyToOne(() => Application, { onDelete: "RESTRICT" }) + @JoinColumn({ name: 'application' }) + application: Application + @Column({ nullable: false, unique: true, diff --git a/src/index.ts b/src/index.ts index aba55e4..e4098da 100644 --- a/src/index.ts +++ b/src/index.ts @@ -45,6 +45,7 @@ import { CreditTypeForms } from "./entity/credit_type_forms"; import { CreditApplication } from "./entity/credit_applications"; import { CreditApplicationStatus } from "./types/credit"; import { CreditApplicationForm } from "./entity/credit_application_forms"; +import { Application } from "./entity/application"; export { User, // @@ -97,5 +98,6 @@ export { CreditTypeForms, CreditApplication, CreditApplicationStatus, - CreditApplicationForm + CreditApplicationForm, + Application };