diff --git a/src/database/entities/Application.ts b/src/database/entities/Application.ts index c4f403436..0085c8950 100644 --- a/src/database/entities/Application.ts +++ b/src/database/entities/Application.ts @@ -16,11 +16,12 @@ along with this program. If not, see . */ -import { Column, Entity, JoinColumn, ManyToOne, OneToOne, RelationId } from "typeorm"; +import { Column, Entity, JoinColumn, ManyToOne, OneToMany, OneToOne, RelationId } from "typeorm"; import { BaseClass } from "./BaseClass"; import { Team } from "./Team"; import { User } from "./User"; import { Guild } from "./Guild"; +import { Emoji } from "@spacebar/database"; @Entity({ name: "applications", @@ -135,4 +136,12 @@ export class Application extends BaseClass { nullable: true, }) team?: Team; + + @JoinColumn({ name: "emoji_ids" }) + @OneToMany(() => Emoji, (emoji: Emoji) => emoji.application, { + cascade: true, + orphanedRowAction: "delete", + onDelete: "CASCADE", + }) + emojis: Emoji[]; } diff --git a/src/database/entities/Emoji.ts b/src/database/entities/Emoji.ts index f75cb03fb..0bf246145 100644 --- a/src/database/entities/Emoji.ts +++ b/src/database/entities/Emoji.ts @@ -17,7 +17,7 @@ */ import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm"; -import { User } from "./index"; +import { Application, User } from "./index"; import { BaseClass } from "./BaseClass"; import { Guild } from "./Guild"; @@ -31,14 +31,25 @@ export class Emoji extends BaseClass { @Column() available: boolean; // whether this emoji can be used, may be false due to various reasons - @Column() - guild_id: string; + @Column({ nullable: true }) + guild_id: string | null; @JoinColumn({ name: "guild_id" }) @ManyToOne(() => Guild, (guild) => guild.emojis, { onDelete: "CASCADE", + nullable: true, }) - guild: Guild; + guild: Guild | null; + + @Column({ nullable: true }) + application_id: string | null; + + @JoinColumn({ name: "application_id" }) + @ManyToOne(() => Application, (application) => application.emojis, { + onDelete: "CASCADE", + nullable: true, + }) + application: Application | null; @Column({ nullable: true }) @RelationId((emoji: Emoji) => emoji.user)