From ebb0f567d5b010951bc0b9b35ffa002135528e1a Mon Sep 17 00:00:00 2001 From: Flam3rboy <34555296+Flam3rboy@users.noreply.github.com> Date: Sun, 10 Oct 2021 14:09:54 +0200 Subject: [PATCH] :art: emoji db migration --- gateway/src/listener/listener.ts | 2 +- util/ormconfig.json | 9 +++++++ util/package-lock.json | Bin 449398 -> 455482 bytes util/package.json | 6 +++-- util/src/entities/Emoji.ts | 14 ++++++++++- util/src/interfaces/Event.ts | 8 +++--- .../migrations/1633864260873-EmojiRoles.ts | 13 ++++++++++ .../src/migrations/1633864669243-EmojiUser.ts | 23 ++++++++++++++++++ 8 files changed, 67 insertions(+), 8 deletions(-) create mode 100644 util/ormconfig.json create mode 100644 util/src/migrations/1633864260873-EmojiRoles.ts create mode 100644 util/src/migrations/1633864669243-EmojiUser.ts diff --git a/gateway/src/listener/listener.ts b/gateway/src/listener/listener.ts index ee640f38..c5b1a576 100644 --- a/gateway/src/listener/listener.ts +++ b/gateway/src/listener/listener.ts @@ -178,7 +178,7 @@ async function consume(this: WebSocket, opts: EventOpts) { case "CHANNEL_CREATE": case "CHANNEL_DELETE": case "CHANNEL_UPDATE": - case "GUILD_EMOJI_UPDATE": + case "GUILD_EMOJIS_UPDATE": case "READY": // will be sent by the gateway case "USER_UPDATE": case "APPLICATION_COMMAND_CREATE": diff --git a/util/ormconfig.json b/util/ormconfig.json new file mode 100644 index 00000000..c5587b8e --- /dev/null +++ b/util/ormconfig.json @@ -0,0 +1,9 @@ +{ + "type": "sqlite", + "database": "../bundle/database.db", + "migrations": ["src/migrations/*.ts"], + "entities": ["src/entities/*.ts"], + "cli": { + "migrationsDir": "src/migrations" + } +} diff --git a/util/package-lock.json b/util/package-lock.json index fa4549c67efb068ae95c24149beafb4a6aba2e83..5f136dbc6850166a0a4d3d7f28a5c4e2c055da34 100644 GIT binary patch delta 3147 zcmds2TWs586qe&O-HHZV$2O{{tZTOinkBx(b{$}2xnJ6(aqL{V2-}Hscbqskcawl3 zbqJ)fV#KdWJhac#q)wHn;Dt@%6^T9U2?3ixXaWS{g$Eusl5Snqjxk;a15185=Q}?B z^!@)i-)|q8Kl$FgBE#Uq576N5rfQXI+1&WEW8<%2s14UI-*{U8!a2Bl7XB=07FDIz z6ni+L)>;iQXRY#zRjkQss|v0}4EuG%$9C$(UsUB9i1prYa}6sBUj4-|!4X(pE(Yef zIITJTf?Gj}TA@;98ySff$`VoxsTF$y&BpvH6G2G7PwHA`1UIX?6$Q`N8}$;G$RpF# zEUk&Pgq;ipJI*<9@q)<=&ccux9>Z{basTMhCPT11Y}f||1=C)z>m-B?ZITDmg2@6= z`sH(n;+~W}W8uhb6RU~kYBXCDLM-BQs!TLVBnY;V^cFmLG0kweTfm!)S`5qSZbOU* z94-yX*j<)3%91l-SD9%hkkqV8P-eWdfIkmmhc~I*BWbSDKL*rB1IS{S1Pe`gbd`N^ z((<_4lUyq1k^V_xC|EW_e)Eau)@)Db+prY_P#T_yQz@UsGSzUtj=Fs_X)LT(oQOLb zmkPld2j&Q4jj+m-l_(xX9a9lJnZ;B#g*Llbi>Ot?7$wa_3e7-9i4}6$Oh_q2LiK6} zEPrJj)mOk1TRGwSm2aPd9Qv<|=;#(&_y#T9irG+`L$8mIahfYE=BgG+XcyR+H(*gQ zA{{DXw5m*n93`byNV_zrhr=71BJrhgCKDl&3^nKS=UvkZX^%`->p?r!@ufY2UE{;i zRwKv($akCAt}Xuui)+vU@WOc$HnL4HVuKk0mftrViIb?Kfm<|Z%qIl`-YJfXwpw_p zRIX{F)U34&saQQ}$LXji#U=dH#X?2EqIAYl4QB!dn_?L^Kg8r>i0> zf$NX~eQb05kp5)ue+{)!Hf;Rp(9Yg7zU|1++gqx4kEZTZfj_W5!c6hbgZ?ORaUKkhy#7TGrbiRfT@7U-7u3t4A z0!kJh+_|3We+PI8ejc3Z!X^mO&{cSesjeHmN?^ZFI+q|5ieVcTEN?i=GhL# z3N4S~XTlbg3NUdVB|I5>&Elin>|83`ZU@Qfa9ifR^;FK1PUJ|Ej5%bP@<*ElN=P-8 z=!kixgW;?P)Za5q=`XDwT$4HY!;Al2BiZ+X$vE_g_y=1-*yc4AvgxOw8MB1ECr1weSYD0u<{MO7hHR;7o9sz zfKTnlL9iP&4zAuf4MBZy emoji.user) + user_id: string; + + @JoinColumn({ name: "user_id" }) + @ManyToOne(() => User) + user: User; + @Column() managed: boolean; @@ -28,4 +37,7 @@ export class Emoji extends BaseClass { @Column() require_colons: boolean; + + @Column({ type: "simple-array" }) + roles: string[]; // roles this emoji is whitelisted to (new discord feature?) } diff --git a/util/src/interfaces/Event.ts b/util/src/interfaces/Event.ts index 03099bbb..3c8ab8ab 100644 --- a/util/src/interfaces/Event.ts +++ b/util/src/interfaces/Event.ts @@ -185,8 +185,8 @@ export interface GuildBanRemoveEvent extends Event { }; } -export interface GuildEmojiUpdateEvent extends Event { - event: "GUILD_EMOJI_UPDATE"; +export interface GuildEmojisUpdateEvent extends Event { + event: "GUILD_EMOJIS_UPDATE"; data: { guild_id: string; emojis: Emoji[]; @@ -459,7 +459,7 @@ export type EventData = | GuildDeleteEvent | GuildBanAddEvent | GuildBanRemoveEvent - | GuildEmojiUpdateEvent + | GuildEmojisUpdateEvent | GuildIntegrationUpdateEvent | GuildMemberAddEvent | GuildMemberRemoveEvent @@ -552,7 +552,7 @@ export type EVENT = | "GUILD_DELETE" | "GUILD_BAN_ADD" | "GUILD_BAN_REMOVE" - | "GUILD_EMOJI_UPDATE" + | "GUILD_EMOJIS_UPDATE" | "GUILD_INTEGRATIONS_UPDATE" | "GUILD_MEMBER_ADD" | "GUILD_MEMBER_REMOVE" diff --git a/util/src/migrations/1633864260873-EmojiRoles.ts b/util/src/migrations/1633864260873-EmojiRoles.ts new file mode 100644 index 00000000..f0d709f2 --- /dev/null +++ b/util/src/migrations/1633864260873-EmojiRoles.ts @@ -0,0 +1,13 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class EmojiRoles1633864260873 implements MigrationInterface { + name = "EmojiRoles1633864260873"; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "emojis" ADD "roles" text NOT NULL DEFAULT ''`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "emojis" DROP COLUMN column_name "roles"`); + } +} diff --git a/util/src/migrations/1633864669243-EmojiUser.ts b/util/src/migrations/1633864669243-EmojiUser.ts new file mode 100644 index 00000000..982405d7 --- /dev/null +++ b/util/src/migrations/1633864669243-EmojiUser.ts @@ -0,0 +1,23 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class EmojiUser1633864669243 implements MigrationInterface { + name = "EmojiUser1633864669243"; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "emojis" ADD "user_id" varchar`); + try { + await queryRunner.query( + `ALTER TABLE "emojis" ADD CONSTRAINT FK_fa7ddd5f9a214e28ce596548421 FOREIGN KEY (user_id) REFERENCES users(id)` + ); + } catch (error) { + console.error( + "sqlite doesn't support altering foreign keys: https://stackoverflow.com/questions/1884818/how-do-i-add-a-foreign-key-to-an-existing-sqlite-table" + ); + } + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "emojis" DROP COLUMN column_name "user_id"`); + await queryRunner.query(`ALTER TABLE "emojis" DROP CONSTRAINT FK_fa7ddd5f9a214e28ce596548421`); + } +}