diff --git a/src/util/entities/User.ts b/src/util/entities/User.ts index d3c01c1a3..d8f52988d 100644 --- a/src/util/entities/User.ts +++ b/src/util/entities/User.ts @@ -27,7 +27,17 @@ import { Relationship } from "./Relationship"; import { SecurityKey } from "./SecurityKey"; import { Session } from "./Session"; import { UserSettings } from "./UserSettings"; -import { ChannelType, PrivateUserProjection, PublicUser, PublicUserProjection, UserPrivate } from "@spacebar/schemas"; +import { + AvatarDecorationData, + ChannelType, + Collectibles, + DisplayNameStyle, + PrimaryGuild, + PrivateUserProjection, + PublicUser, + PublicUserProjection, + UserPrivate, +} from "@spacebar/schemas"; @Entity({ name: "users", @@ -168,6 +178,18 @@ export class User extends BaseClass { @Column({ type: "simple-array", nullable: true }) badge_ids?: string[]; + @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; + + @Column({ type: "simple-json", nullable: true }) + primary_guild?: PrimaryGuild; + // TODO: I don't like this method? validate() { if (this.discriminator) { diff --git a/src/util/migration/postgres/1770062009127-UserProfileCustomisation.ts b/src/util/migration/postgres/1770062009127-UserProfileCustomisation.ts new file mode 100644 index 000000000..c631d0d8a --- /dev/null +++ b/src/util/migration/postgres/1770062009127-UserProfileCustomisation.ts @@ -0,0 +1,19 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class UserProfileCustomisation1770062009127 implements MigrationInterface { + name = "UserProfileCustomisation1770062009127"; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "users" ADD "avatar_decoration_data" text`); + await queryRunner.query(`ALTER TABLE "users" ADD "display_name_styles" text`); + await queryRunner.query(`ALTER TABLE "users" ADD "collectibles" text`); + await queryRunner.query(`ALTER TABLE "users" ADD "primary_guild" text`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "users" DROP COLUMN "primary_guild"`); + await queryRunner.query(`ALTER TABLE "users" DROP COLUMN "collectibles"`); + await queryRunner.query(`ALTER TABLE "users" DROP COLUMN "display_name_styles"`); + await queryRunner.query(`ALTER TABLE "users" DROP COLUMN "avatar_decoration_data"`); + } +}