mirror of
https://github.com/spacebarchat/server.git
synced 2026-11-13 07:38:29 +00:00
Indexes on some guild relations
This commit is contained in:
1 parent
e7eb5a17df
commit
3fc3113585
5 files changed
+33
-4
No files matched your search
@@ -17,7 +17,7 @@
|
||||
*/
|
||||
|
||||
import { HTTPError } from "lambert-server/HTTPError";
|
||||
import { Column, Entity, JoinColumn, ManyToOne, OneToMany, RelationId } from "typeorm";
|
||||
import { Column, Entity, JoinColumn, ManyToOne, OneToMany, RelationId, Index } from "typeorm";
|
||||
import { DmChannelDTO } from "../../util/dtos";
|
||||
import { ChannelCreateEvent, ChannelRecipientRemoveEvent, ThreadCreateEvent, ThreadMembersUpdateEvent } from "../../util/interfaces";
|
||||
import { InvisibleCharacters, Snowflake, emitEvent, getPermission, Permissions, Config, DiscordApiErrors } from "@spacebar/util/util";
|
||||
@@ -70,6 +70,7 @@ export class Channel extends BaseClass {
|
||||
|
||||
@Column({ nullable: true })
|
||||
@RelationId((channel: Channel) => channel.guild)
|
||||
@Index("IDX_channel_guild_id", { where: "guild_id IS NOT NULL" })
|
||||
guild_id?: string;
|
||||
|
||||
@JoinColumn({ name: "guild_id", foreignKeyConstraintName: "FK_channel_guild_id" })
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm";
|
||||
import { Column, Entity, JoinColumn, ManyToOne, RelationId, Index } from "typeorm";
|
||||
import { BaseClass } from "./BaseClass";
|
||||
import { Application } from "./Application";
|
||||
import { Guild } from "./Guild";
|
||||
@@ -33,6 +33,7 @@ export class Emoji extends BaseClass {
|
||||
available: boolean; // whether this emoji can be used, may be false due to various reasons
|
||||
|
||||
@Column({ nullable: true })
|
||||
@Index("IDX_emoji_guild_id", { where: "guild_id IS NOT NULL" })
|
||||
guild_id: string | null;
|
||||
|
||||
@JoinColumn({ name: "guild_id", foreignKeyConstraintName: "FK_emoji_guild_id" })
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm";
|
||||
import { Column, Entity, JoinColumn, ManyToOne, RelationId, Index } from "typeorm";
|
||||
|
||||
import { BaseClass } from "./BaseClass";
|
||||
import { Guild } from "./Guild";
|
||||
@@ -28,6 +28,7 @@ import { RoleColors } from "@spacebar/schemas";
|
||||
export class Role extends BaseClass {
|
||||
@Column()
|
||||
@RelationId((role: Role) => role.guild)
|
||||
@Index("IDX_role_guild_id")
|
||||
guild_id: string;
|
||||
|
||||
@JoinColumn({ name: "guild_id", foreignKeyConstraintName: "FK_role_guild_id" })
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm";
|
||||
import { Column, Entity, JoinColumn, ManyToOne, RelationId, Index } from "typeorm";
|
||||
import { BaseClass } from "./BaseClass";
|
||||
import { Guild } from "./Guild";
|
||||
import { User } from "./User";
|
||||
@@ -50,6 +50,7 @@ export class Sticker extends BaseClass {
|
||||
pack: import("./StickerPack").StickerPack;
|
||||
|
||||
@Column({ nullable: true })
|
||||
@Index("IDX_sticker_guild_id", { where: "guild_id IS NOT NULL" })
|
||||
guild_id?: string;
|
||||
|
||||
@JoinColumn({ name: "guild_id", foreignKeyConstraintName: "FK_sticker_guild_id" })
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class RoleStickerEmojiGuildIndexes1793720801192 implements MigrationInterface {
|
||||
name = "RoleStickerEmojiGuildIndexes1793720801192";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "roles" DROP CONSTRAINT "FK_role_guild_id"`);
|
||||
await queryRunner.query(`ALTER TABLE "roles" ALTER COLUMN "guild_id" SET NOT NULL`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_role_guild_id" ON "roles" ("guild_id") `);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_sticker_guild_id" ON "stickers" ("guild_id") WHERE guild_id IS NOT NULL`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_emoji_guild_id" ON "emojis" ("guild_id") WHERE guild_id IS NOT NULL`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_channel_guild_id" ON "channels" ("guild_id") WHERE guild_id IS NOT NULL`);
|
||||
await queryRunner.query(`ALTER TABLE "roles" ADD CONSTRAINT "FK_role_guild_id" FOREIGN KEY ("guild_id") REFERENCES "guilds"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "roles" DROP CONSTRAINT "FK_role_guild_id"`);
|
||||
await queryRunner.query(`DROP INDEX "public"."IDX_channel_guild_id"`);
|
||||
await queryRunner.query(`DROP INDEX "public"."IDX_emoji_guild_id"`);
|
||||
await queryRunner.query(`DROP INDEX "public"."IDX_sticker_guild_id"`);
|
||||
await queryRunner.query(`DROP INDEX "public"."IDX_role_guild_id"`);
|
||||
await queryRunner.query(`ALTER TABLE "roles" ALTER COLUMN "guild_id" DROP NOT NULL`);
|
||||
await queryRunner.query(`ALTER TABLE "roles" ADD CONSTRAINT "FK_role_guild_id" FOREIGN KEY ("guild_id") REFERENCES "guilds"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user