diff --git a/src/util/entities/Member.ts b/src/util/entities/Member.ts index 70146ad97..b15a9276e 100644 --- a/src/util/entities/Member.ts +++ b/src/util/entities/Member.ts @@ -28,7 +28,7 @@ import { Guild } from "./Guild"; import { Message } from "./Message"; import { Role } from "./Role"; import { User } from "./User"; -import { PublicMember, PublicMemberProjection, UserGuildSettings } from "@spacebar/schemas"; +import { AvatarDecorationData, Collectibles, DisplayNameStyle, PrimaryGuild, PublicMember, PublicMemberProjection, UserGuildSettings } from "@spacebar/schemas"; export const MemberPrivateProjection: (keyof Member)[] = [ "id", @@ -146,6 +146,15 @@ export class Member extends BaseClassWithoutId { // @Column({ type: "simple-json" }) // read_state: ReadState; + @Column({ type: "simple-json", nullable: true }) + avatar_decoration_data?: AvatarDecorationData; + + @Column({ type: "simple-json", nullable: true }) + display_name_styles?: DisplayNameStyle; + + @Column({ type: "simple-json", nullable: true }) + collectibles?: Collectibles; + @BeforeUpdate() @BeforeInsert() validate() { @@ -160,7 +169,7 @@ export class Member extends BaseClassWithoutId { static async IsInGuildOrFail(user_id: string, guild_id: string) { if ( await Member.count({ - where: { id: user_id, guild: { id: guild_id } }, + where: { id: user_id, guild_id }, }) ) return; @@ -172,7 +181,7 @@ export class Member extends BaseClassWithoutId { select: { owner_id: true }, where: { id: guild_id }, }); - if (guild.owner_id === user_id) throw new Error("The owner cannot be removed of the guild"); + if (guild.owner_id === user_id) throw new Error("The owner cannot be removed from the guild"); const member = await Member.findOneOrFail({ where: { id: user_id, guild_id }, relations: { user: true }, diff --git a/src/util/migration/postgres/1770079838835-MemberProfileCustomisation.ts b/src/util/migration/postgres/1770079838835-MemberProfileCustomisation.ts new file mode 100644 index 000000000..740391ee4 --- /dev/null +++ b/src/util/migration/postgres/1770079838835-MemberProfileCustomisation.ts @@ -0,0 +1,36 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class MemberProfileCustomisation1770079838835 implements MigrationInterface { + name = "MemberProfileCustomisation1770079838835"; + + public async up(queryRunner: QueryRunner): Promise { + // just gonna let typeorm do its thing for once... + await queryRunner.query(`ALTER TABLE "thread_members" DROP CONSTRAINT "FK_606ac45e8756d3440c584477f4e"`); + await queryRunner.query(`ALTER TABLE "webhooks" DROP CONSTRAINT "fk_d64f38834fa676f6caa4786ddd6"`); + await queryRunner.query(`DROP INDEX "public"."IDX_bde0970b6a26bdbd83508addd2"`); + await queryRunner.query(`ALTER TABLE "members" ADD "avatar_decoration_data" text`); + await queryRunner.query(`ALTER TABLE "members" ADD "display_name_styles" text`); + await queryRunner.query(`ALTER TABLE "members" ADD "collectibles" text`); + await queryRunner.query(`ALTER TABLE "guilds" ALTER COLUMN "channel_ordering" DROP DEFAULT`); + await queryRunner.query(`CREATE UNIQUE INDEX "IDX_38d4f704373da3f0dc9b352ac9" ON "thread_members" ("id", "member_idx") `); + await queryRunner.query( + `ALTER TABLE "thread_members" ADD CONSTRAINT "FK_4721015b4e24ad29da55dbd2de0" FOREIGN KEY ("member_idx") REFERENCES "members"("index") ON DELETE CASCADE ON UPDATE NO ACTION`, + ); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "thread_members" DROP CONSTRAINT "FK_4721015b4e24ad29da55dbd2de0"`); + await queryRunner.query(`DROP INDEX "public"."IDX_38d4f704373da3f0dc9b352ac9"`); + await queryRunner.query(`ALTER TABLE "guilds" ALTER COLUMN "channel_ordering" SET DEFAULT '[]'`); + await queryRunner.query(`ALTER TABLE "members" DROP COLUMN "collectibles"`); + await queryRunner.query(`ALTER TABLE "members" DROP COLUMN "display_name_styles"`); + await queryRunner.query(`ALTER TABLE "members" DROP COLUMN "avatar_decoration_data"`); + await queryRunner.query(`CREATE UNIQUE INDEX "IDX_bde0970b6a26bdbd83508addd2" ON "thread_members" ("id", "member_idx") `); + await queryRunner.query( + `ALTER TABLE "webhooks" ADD CONSTRAINT "fk_d64f38834fa676f6caa4786ddd6" FOREIGN KEY ("source_channel_id") REFERENCES "channels"("id") ON DELETE CASCADE ON UPDATE NO ACTION`, + ); + await queryRunner.query( + `ALTER TABLE "thread_members" ADD CONSTRAINT "FK_606ac45e8756d3440c584477f4e" FOREIGN KEY ("member_idx") REFERENCES "members"("index") ON DELETE CASCADE ON UPDATE NO ACTION`, + ); + } +}