mirror of
https://github.com/spacebarchat/server.git
synced 2026-04-09 21:05:57 +00:00
Do the funny thing (make user->invite cascade delet)
This commit is contained in:
@@ -4,19 +4,20 @@ import { BaseClassWithoutId } from "./BaseClass";
|
||||
import { Channel } from "./Channel";
|
||||
import { Guild } from "./Guild";
|
||||
import { User } from "./User";
|
||||
import { random } from "@fosscord/api";
|
||||
|
||||
export const PublicInviteRelation = ["inviter", "guild", "channel"];
|
||||
|
||||
@Entity("invites")
|
||||
export class Invite extends BaseClassWithoutId {
|
||||
@PrimaryColumn()
|
||||
code: string;
|
||||
code: string = random();
|
||||
|
||||
@Column()
|
||||
temporary: boolean;
|
||||
temporary: boolean = true;
|
||||
|
||||
@Column()
|
||||
uses: number;
|
||||
uses: number = 0;
|
||||
|
||||
@Column()
|
||||
max_uses: number;
|
||||
@@ -25,7 +26,7 @@ export class Invite extends BaseClassWithoutId {
|
||||
max_age: number;
|
||||
|
||||
@Column()
|
||||
created_at: Date;
|
||||
created_at: Date = new Date();
|
||||
|
||||
@Column()
|
||||
expires_at: Date;
|
||||
@@ -55,7 +56,9 @@ export class Invite extends BaseClassWithoutId {
|
||||
inviter_id: string;
|
||||
|
||||
@JoinColumn({ name: "inviter_id" })
|
||||
@ManyToOne(() => User)
|
||||
@ManyToOne(() => User, {
|
||||
onDelete: "CASCADE"
|
||||
})
|
||||
inviter: User;
|
||||
|
||||
@Column({ nullable: true })
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class InvitersAreDeletable1660416072362 implements MigrationInterface {
|
||||
name = 'InvitersAreDeletable1660416072362'
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`invites\` DROP FOREIGN KEY \`FK_15c35422032e0b22b4ada95f48f\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
DROP INDEX \`IDX_76ba283779c8441fd5ff819c8c\` ON \`users\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
CREATE TABLE \`plugin_config\` (
|
||||
\`key\` varchar(255) NOT NULL,
|
||||
\`value\` text NULL,
|
||||
PRIMARY KEY (\`key\`)
|
||||
) ENGINE = InnoDB
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`channels\`
|
||||
ADD \`flags\` int NULL
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`channels\`
|
||||
ADD \`default_thread_rate_limit_per_user\` int NULL
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`invites\`
|
||||
ADD CONSTRAINT \`FK_15c35422032e0b22b4ada95f48f\` FOREIGN KEY (\`inviter_id\`) REFERENCES \`users\`(\`id\`) ON DELETE CASCADE ON UPDATE NO ACTION
|
||||
`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`invites\` DROP FOREIGN KEY \`FK_15c35422032e0b22b4ada95f48f\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`channels\` DROP COLUMN \`default_thread_rate_limit_per_user\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`channels\` DROP COLUMN \`flags\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
DROP TABLE \`plugin_config\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
CREATE UNIQUE INDEX \`IDX_76ba283779c8441fd5ff819c8c\` ON \`users\` (\`settingsId\`)
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`invites\`
|
||||
ADD CONSTRAINT \`FK_15c35422032e0b22b4ada95f48f\` FOREIGN KEY (\`inviter_id\`) REFERENCES \`users\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||
`);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class InvitersAreDeletable1660416055566 implements MigrationInterface {
|
||||
name = 'InvitersAreDeletable1660416055566'
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "invites" DROP CONSTRAINT "FK_15c35422032e0b22b4ada95f48f"
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "invites"
|
||||
ADD CONSTRAINT "FK_15c35422032e0b22b4ada95f48f" FOREIGN KEY ("inviter_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE NO ACTION
|
||||
`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "invites" DROP CONSTRAINT "FK_15c35422032e0b22b4ada95f48f"
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "invites"
|
||||
ADD CONSTRAINT "FK_15c35422032e0b22b4ada95f48f" FOREIGN KEY ("inviter_id") REFERENCES "users"("id") ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||
`);
|
||||
}
|
||||
|
||||
}
|
||||
246
util/src/migrations/sqlite/1660416010862-InvitersAreDeletable.ts
Normal file
246
util/src/migrations/sqlite/1660416010862-InvitersAreDeletable.ts
Normal file
@@ -0,0 +1,246 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class InvitersAreDeletable1660416010862 implements MigrationInterface {
|
||||
name = 'InvitersAreDeletable1660416010862'
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`
|
||||
CREATE TABLE "temporary_invites" (
|
||||
"code" varchar PRIMARY KEY NOT NULL,
|
||||
"temporary" boolean NOT NULL,
|
||||
"uses" integer NOT NULL,
|
||||
"max_uses" integer NOT NULL,
|
||||
"max_age" integer NOT NULL,
|
||||
"created_at" datetime NOT NULL,
|
||||
"expires_at" datetime NOT NULL,
|
||||
"guild_id" varchar,
|
||||
"channel_id" varchar,
|
||||
"inviter_id" varchar,
|
||||
"target_user_id" varchar,
|
||||
"target_user_type" integer,
|
||||
"vanity_url" boolean,
|
||||
CONSTRAINT "FK_11a0d394f8fc649c19ce5f16b59" FOREIGN KEY ("target_user_id") REFERENCES "users" ("id") ON DELETE CASCADE ON UPDATE NO ACTION,
|
||||
CONSTRAINT "FK_6a15b051fe5050aa00a4b9ff0f6" FOREIGN KEY ("channel_id") REFERENCES "channels" ("id") ON DELETE CASCADE ON UPDATE NO ACTION,
|
||||
CONSTRAINT "FK_3f4939aa1461e8af57fea3fb05d" FOREIGN KEY ("guild_id") REFERENCES "guilds" ("id") ON DELETE CASCADE ON UPDATE NO ACTION
|
||||
)
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
INSERT INTO "temporary_invites"(
|
||||
"code",
|
||||
"temporary",
|
||||
"uses",
|
||||
"max_uses",
|
||||
"max_age",
|
||||
"created_at",
|
||||
"expires_at",
|
||||
"guild_id",
|
||||
"channel_id",
|
||||
"inviter_id",
|
||||
"target_user_id",
|
||||
"target_user_type",
|
||||
"vanity_url"
|
||||
)
|
||||
SELECT "code",
|
||||
"temporary",
|
||||
"uses",
|
||||
"max_uses",
|
||||
"max_age",
|
||||
"created_at",
|
||||
"expires_at",
|
||||
"guild_id",
|
||||
"channel_id",
|
||||
"inviter_id",
|
||||
"target_user_id",
|
||||
"target_user_type",
|
||||
"vanity_url"
|
||||
FROM "invites"
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
DROP TABLE "invites"
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "temporary_invites"
|
||||
RENAME TO "invites"
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
CREATE TABLE "temporary_invites" (
|
||||
"code" varchar PRIMARY KEY NOT NULL,
|
||||
"temporary" boolean NOT NULL,
|
||||
"uses" integer NOT NULL,
|
||||
"max_uses" integer NOT NULL,
|
||||
"max_age" integer NOT NULL,
|
||||
"created_at" datetime NOT NULL,
|
||||
"expires_at" datetime NOT NULL,
|
||||
"guild_id" varchar,
|
||||
"channel_id" varchar,
|
||||
"inviter_id" varchar,
|
||||
"target_user_id" varchar,
|
||||
"target_user_type" integer,
|
||||
"vanity_url" boolean,
|
||||
CONSTRAINT "FK_11a0d394f8fc649c19ce5f16b59" FOREIGN KEY ("target_user_id") REFERENCES "users" ("id") ON DELETE CASCADE ON UPDATE NO ACTION,
|
||||
CONSTRAINT "FK_6a15b051fe5050aa00a4b9ff0f6" FOREIGN KEY ("channel_id") REFERENCES "channels" ("id") ON DELETE CASCADE ON UPDATE NO ACTION,
|
||||
CONSTRAINT "FK_3f4939aa1461e8af57fea3fb05d" FOREIGN KEY ("guild_id") REFERENCES "guilds" ("id") ON DELETE CASCADE ON UPDATE NO ACTION,
|
||||
CONSTRAINT "FK_15c35422032e0b22b4ada95f48f" FOREIGN KEY ("inviter_id") REFERENCES "users" ("id") ON DELETE CASCADE ON UPDATE NO ACTION
|
||||
)
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
INSERT INTO "temporary_invites"(
|
||||
"code",
|
||||
"temporary",
|
||||
"uses",
|
||||
"max_uses",
|
||||
"max_age",
|
||||
"created_at",
|
||||
"expires_at",
|
||||
"guild_id",
|
||||
"channel_id",
|
||||
"inviter_id",
|
||||
"target_user_id",
|
||||
"target_user_type",
|
||||
"vanity_url"
|
||||
)
|
||||
SELECT "code",
|
||||
"temporary",
|
||||
"uses",
|
||||
"max_uses",
|
||||
"max_age",
|
||||
"created_at",
|
||||
"expires_at",
|
||||
"guild_id",
|
||||
"channel_id",
|
||||
"inviter_id",
|
||||
"target_user_id",
|
||||
"target_user_type",
|
||||
"vanity_url"
|
||||
FROM "invites"
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
DROP TABLE "invites"
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "temporary_invites"
|
||||
RENAME TO "invites"
|
||||
`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "invites"
|
||||
RENAME TO "temporary_invites"
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
CREATE TABLE "invites" (
|
||||
"code" varchar PRIMARY KEY NOT NULL,
|
||||
"temporary" boolean NOT NULL,
|
||||
"uses" integer NOT NULL,
|
||||
"max_uses" integer NOT NULL,
|
||||
"max_age" integer NOT NULL,
|
||||
"created_at" datetime NOT NULL,
|
||||
"expires_at" datetime NOT NULL,
|
||||
"guild_id" varchar,
|
||||
"channel_id" varchar,
|
||||
"inviter_id" varchar,
|
||||
"target_user_id" varchar,
|
||||
"target_user_type" integer,
|
||||
"vanity_url" boolean,
|
||||
CONSTRAINT "FK_11a0d394f8fc649c19ce5f16b59" FOREIGN KEY ("target_user_id") REFERENCES "users" ("id") ON DELETE CASCADE ON UPDATE NO ACTION,
|
||||
CONSTRAINT "FK_6a15b051fe5050aa00a4b9ff0f6" FOREIGN KEY ("channel_id") REFERENCES "channels" ("id") ON DELETE CASCADE ON UPDATE NO ACTION,
|
||||
CONSTRAINT "FK_3f4939aa1461e8af57fea3fb05d" FOREIGN KEY ("guild_id") REFERENCES "guilds" ("id") ON DELETE CASCADE ON UPDATE NO ACTION
|
||||
)
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
INSERT INTO "invites"(
|
||||
"code",
|
||||
"temporary",
|
||||
"uses",
|
||||
"max_uses",
|
||||
"max_age",
|
||||
"created_at",
|
||||
"expires_at",
|
||||
"guild_id",
|
||||
"channel_id",
|
||||
"inviter_id",
|
||||
"target_user_id",
|
||||
"target_user_type",
|
||||
"vanity_url"
|
||||
)
|
||||
SELECT "code",
|
||||
"temporary",
|
||||
"uses",
|
||||
"max_uses",
|
||||
"max_age",
|
||||
"created_at",
|
||||
"expires_at",
|
||||
"guild_id",
|
||||
"channel_id",
|
||||
"inviter_id",
|
||||
"target_user_id",
|
||||
"target_user_type",
|
||||
"vanity_url"
|
||||
FROM "temporary_invites"
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
DROP TABLE "temporary_invites"
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "invites"
|
||||
RENAME TO "temporary_invites"
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
CREATE TABLE "invites" (
|
||||
"code" varchar PRIMARY KEY NOT NULL,
|
||||
"temporary" boolean NOT NULL,
|
||||
"uses" integer NOT NULL,
|
||||
"max_uses" integer NOT NULL,
|
||||
"max_age" integer NOT NULL,
|
||||
"created_at" datetime NOT NULL,
|
||||
"expires_at" datetime NOT NULL,
|
||||
"guild_id" varchar,
|
||||
"channel_id" varchar,
|
||||
"inviter_id" varchar,
|
||||
"target_user_id" varchar,
|
||||
"target_user_type" integer,
|
||||
"vanity_url" boolean,
|
||||
CONSTRAINT "FK_11a0d394f8fc649c19ce5f16b59" FOREIGN KEY ("target_user_id") REFERENCES "users" ("id") ON DELETE CASCADE ON UPDATE NO ACTION,
|
||||
CONSTRAINT "FK_15c35422032e0b22b4ada95f48f" FOREIGN KEY ("inviter_id") REFERENCES "users" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION,
|
||||
CONSTRAINT "FK_6a15b051fe5050aa00a4b9ff0f6" FOREIGN KEY ("channel_id") REFERENCES "channels" ("id") ON DELETE CASCADE ON UPDATE NO ACTION,
|
||||
CONSTRAINT "FK_3f4939aa1461e8af57fea3fb05d" FOREIGN KEY ("guild_id") REFERENCES "guilds" ("id") ON DELETE CASCADE ON UPDATE NO ACTION
|
||||
)
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
INSERT INTO "invites"(
|
||||
"code",
|
||||
"temporary",
|
||||
"uses",
|
||||
"max_uses",
|
||||
"max_age",
|
||||
"created_at",
|
||||
"expires_at",
|
||||
"guild_id",
|
||||
"channel_id",
|
||||
"inviter_id",
|
||||
"target_user_id",
|
||||
"target_user_type",
|
||||
"vanity_url"
|
||||
)
|
||||
SELECT "code",
|
||||
"temporary",
|
||||
"uses",
|
||||
"max_uses",
|
||||
"max_age",
|
||||
"created_at",
|
||||
"expires_at",
|
||||
"guild_id",
|
||||
"channel_id",
|
||||
"inviter_id",
|
||||
"target_user_id",
|
||||
"target_user_type",
|
||||
"vanity_url"
|
||||
FROM "temporary_invites"
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
DROP TABLE "temporary_invites"
|
||||
`);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user