mirror of
https://github.com/spacebarchat/server.git
synced 2026-03-30 13:55:39 +00:00
Add member profile customisation fields to db
This commit is contained in:
@@ -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 },
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class MemberProfileCustomisation1770079838835 implements MigrationInterface {
|
||||
name = "MemberProfileCustomisation1770079838835";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
// 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<void> {
|
||||
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`,
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user