From f12190c95ab55723cf69786f25e9b28182fb07db Mon Sep 17 00:00:00 2001 From: Alexis <35.alexis.pele@gmail.com> Date: Sun, 1 Aug 2021 22:30:53 +0200 Subject: [PATCH] Added relationships to entities --- src/database/models/spells/Ingredient.ts | 14 +++++++++++- src/database/models/spells/MetaSchool.ts | 11 ++++++++- src/database/models/spells/School.ts | 18 ++++++++++++++- src/database/models/spells/Spell.ts | 20 +++++++++++++++- src/database/models/spells/Variable.ts | 14 +++++++++++- src/database/models/users/Permission.ts | 7 +++++- src/database/models/users/Role.ts | 11 ++++++++- src/database/models/users/User.ts | 29 +++++++++++++++++++++++- 8 files changed, 116 insertions(+), 8 deletions(-) diff --git a/src/database/models/spells/Ingredient.ts b/src/database/models/spells/Ingredient.ts index 3e74f4e..a221bbd 100644 --- a/src/database/models/spells/Ingredient.ts +++ b/src/database/models/spells/Ingredient.ts @@ -1,4 +1,6 @@ -import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm"; +import { Column, CreateDateColumn, Entity, JoinTable, ManyToMany, ManyToOne, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm"; +import { User } from "../users/User"; +import { Spell } from "./Spell"; @Entity() export class Ingredient { @@ -13,6 +15,16 @@ export class Ingredient { @Column() public published: boolean + @ManyToMany(() => Spell, spell => spell.ingredients) + @JoinTable({ + name: 'ingredients_spells' + }) + public spells?: Spell[] + + @ManyToOne(() => User, user => user.ingredients) + public creator: User + + // TIMESTAMPS @Column() @CreateDateColumn() public createdAt?: Date diff --git a/src/database/models/spells/MetaSchool.ts b/src/database/models/spells/MetaSchool.ts index 795e7a4..e3f36d6 100644 --- a/src/database/models/spells/MetaSchool.ts +++ b/src/database/models/spells/MetaSchool.ts @@ -1,4 +1,6 @@ -import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm" +import { Column, CreateDateColumn, Entity, ManyToOne, OneToMany, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm" +import { User } from "../users/User" +import { School } from "./School" @Entity() export class MetaSchool { @@ -13,6 +15,13 @@ export class MetaSchool { @Column() public published: boolean + @OneToMany(() => School, school => school.metaSchool) + public schools?: School[] + + @ManyToOne(() => User, user => user.metaSchools) + public creator: User + + // TIMESTAMPS @Column() @CreateDateColumn() public createdAt?: Date diff --git a/src/database/models/spells/School.ts b/src/database/models/spells/School.ts index b64f563..bc0fdaf 100644 --- a/src/database/models/spells/School.ts +++ b/src/database/models/spells/School.ts @@ -1,4 +1,7 @@ -import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm"; +import { Column, CreateDateColumn, Entity, JoinTable, ManyToMany, ManyToOne, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm"; +import { User } from "../users/User"; +import { MetaSchool } from "./MetaSchool"; +import { Spell } from "./Spell"; @Entity() export class School { @@ -13,6 +16,19 @@ export class School { @Column() public published: boolean + @ManyToMany(() => Spell, spell => spell.schools) + @JoinTable({ + name: 'schools_spells' + }) + public spells?: Spell[] + + @ManyToOne(() => MetaSchool, metaSchool => metaSchool.schools) + public metaSchool: MetaSchool + + @ManyToOne(() => User, user => user.schools) + public creator: User + + // TIMESTAMPS @Column() @CreateDateColumn() public createdAt?: Date diff --git a/src/database/models/spells/Spell.ts b/src/database/models/spells/Spell.ts index a6b4c02..965ffd1 100644 --- a/src/database/models/spells/Spell.ts +++ b/src/database/models/spells/Spell.ts @@ -1,4 +1,8 @@ -import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm" +import { Column, CreateDateColumn, Entity, JoinTable, ManyToMany, ManyToOne, OneToMany, OneToOne, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm" +import { User } from "../users/User" +import { Ingredient } from "./Ingredient" +import { School } from "./School" +import { Variable } from "./Variable" @Entity() export class Spell { @@ -25,6 +29,20 @@ export class Spell { @Column() public public?: boolean + // LINKED ENTITIES + @ManyToMany(() => School, school => school.spells) + public schools?: School[] + + @ManyToMany(() => Variable, variable => variable.spells) + public variables?: Variable[] + + @ManyToMany(() => Ingredient, ingredient => ingredient.spells) + public ingredients?: Ingredient[] + + @ManyToOne(() => User, user => user.spells) + public creator: User + + // TIMESTAMPS @Column() @CreateDateColumn() public createdAt?: Date diff --git a/src/database/models/spells/Variable.ts b/src/database/models/spells/Variable.ts index 3e494b8..c11e4ad 100644 --- a/src/database/models/spells/Variable.ts +++ b/src/database/models/spells/Variable.ts @@ -1,4 +1,6 @@ -import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm"; +import { Column, CreateDateColumn, Entity, JoinTable, ManyToMany, ManyToOne, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm"; +import { User } from "../users/User"; +import { Spell } from "./Spell"; @Entity() export class Variable { @@ -11,6 +13,16 @@ export class Variable { @Column() public published: boolean + @ManyToMany(() => Spell, spell => spell.variables) + @JoinTable({ + name: 'variables_spells' + }) + public spells?: Spell[] + + @ManyToOne(() => User, user => user.variables) + public creator: User + + // TIMESTAMPS @Column() @CreateDateColumn() public createdAt?: Date diff --git a/src/database/models/users/Permission.ts b/src/database/models/users/Permission.ts index 2a2ca91..0df2c36 100644 --- a/src/database/models/users/Permission.ts +++ b/src/database/models/users/Permission.ts @@ -1,4 +1,5 @@ -import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm"; +import { Column, CreateDateColumn, Entity, ManyToOne, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm"; +import { Role } from "./Role"; @Entity() export class Permission { @@ -8,6 +9,10 @@ export class Permission { @Column() public slug!: string + @ManyToOne(() => Role, role => role.permissions) + public roles: Role[] + + // TIMESTAMPS @Column() @CreateDateColumn() public createdAt?: Date diff --git a/src/database/models/users/Role.ts b/src/database/models/users/Role.ts index 1ac6ce9..4aefe10 100644 --- a/src/database/models/users/Role.ts +++ b/src/database/models/users/Role.ts @@ -1,4 +1,6 @@ -import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm"; +import { Column, CreateDateColumn, Entity, OneToMany, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm"; +import { Permission } from "./Permission"; +import { User } from "./User"; @Entity() export class Role { @@ -10,6 +12,13 @@ export class Role { @Column() public description!: string + @OneToMany(() => Permission, permission => permission.roles) + public permissions: Permission[] + + @OneToMany(() => User, user => user.role) + public users: User[] + + // TIMESTAMPS @Column() @CreateDateColumn() public createdAt?: Date diff --git a/src/database/models/users/User.ts b/src/database/models/users/User.ts index 2df2479..be09e5f 100644 --- a/src/database/models/users/User.ts +++ b/src/database/models/users/User.ts @@ -1,4 +1,10 @@ -import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm" +import { Column, CreateDateColumn, Entity, ManyToOne, OneToMany, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm" +import { Ingredient } from "../spells/Ingredient" +import { MetaSchool } from "../spells/MetaSchool" +import { School } from "../spells/School" +import { Spell } from "../spells/Spell" +import { Variable } from "../spells/Variable" +import { Role } from "./Role" @Entity() export class User { @@ -20,6 +26,27 @@ export class User { @Column() public verified: boolean + // CREATIONS + @OneToMany(() => Spell, spell => spell.creator) + public spells?: Spell[] + + @OneToMany(() => School, school => school.creator) + public schools?: School[] + + @OneToMany(() => Variable, variable => variable.creator) + public variables?: Variable[] + + @OneToMany(() => Ingredient, ingredients => ingredients.creator) + public ingredients?: Ingredient[] + + @OneToMany(() => MetaSchool, metaSchools => metaSchools.creator) + public metaSchools?: Ingredient[] + + // ROLE + @ManyToOne(() => Role, role => role.users) + public role: Role + + // TIMESTAMPS @Column() @CreateDateColumn() public createdAt?: Date