diff --git a/util/src/entities/Guild.ts b/util/src/entities/Guild.ts
index 35595191..157f0921 100644
--- a/util/src/entities/Guild.ts
+++ b/util/src/entities/Guild.ts
@@ -258,14 +258,6 @@ export class Guild extends BaseClass {
unavailable?: boolean;
@Column({ nullable: true })
- @RelationId((guild: Guild) => guild.vanity_url)
- vanity_url_code?: string;
-
- @JoinColumn({ name: "vanity_url_code" })
- @ManyToOne(() => Invite)
- vanity_url?: Invite;
-
- @Column({ nullable: true })
verification_level?: number;
@Column({ type: "simple-json" })
diff --git a/util/src/entities/Invite.ts b/util/src/entities/Invite.ts
index 82556fab..b3e00957 100644
--- a/util/src/entities/Invite.ts
+++ b/util/src/entities/Invite.ts
@@ -1,6 +1,6 @@
-import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm";
+import { Column, Entity, JoinColumn, ManyToOne, RelationId, PrimaryColumn } from "typeorm";
import { Member } from "./Member";
-import { BaseClass, PrimaryIdColumn } from "./BaseClass";
+import { BaseClassWithoutId } from "./BaseClass";
import { Channel } from "./Channel";
import { Guild } from "./Guild";
import { User } from "./User";
@@ -8,8 +8,8 @@ import { User } from "./User";
export const PublicInviteRelation = ["inviter", "guild", "channel"];
@Entity("invites")
-export class Invite extends BaseClass {
- @PrimaryIdColumn()
+export class Invite extends BaseClassWithoutId {
+ @PrimaryColumn()
code: string;
@Column()
@@ -71,6 +71,9 @@ export class Invite extends BaseClass {
@Column({ nullable: true })
target_user_type?: number;
+ @Column({ nullable: true})
+ vanity_url?: boolean;
+
static async joinGuild(user_id: string, code: string) {
const invite = await Invite.findOneOrFail({ code });
if (invite.uses++ >= invite.max_uses && invite.max_uses !== 0) await Invite.delete({ code });
diff --git a/util/src/migrations/1633881705509-VanityInvite.ts b/util/src/migrations/1633881705509-VanityInvite.ts
new file mode 100644
index 00000000..af9b98ae
--- /dev/null
+++ b/util/src/migrations/1633881705509-VanityInvite.ts
@@ -0,0 +1,17 @@
+import { MigrationInterface, QueryRunner } from "typeorm";
+
+export class VanityInvite1633881705509 implements MigrationInterface {
+ public async up(queryRunner: QueryRunner): Promise<void> {
+ try {
+ await queryRunner.query(`ALTER TABLE "emojis" DROP COLUMN vanity_url_code`);
+ await queryRunner.query(`ALTER TABLE "emojis" DROP CONSTRAINT FK_c2c1809d79eb120ea0cb8d342ad`);
+ } catch (error) {}
+ }
+
+ public async down(queryRunner: QueryRunner): Promise<void> {
+ await queryRunner.query(`ALTER TABLE "emojis" ADD vanity_url_code varchar`);
+ await queryRunner.query(
+ `ALTER TABLE "emojis" ADD CONSTRAINT FK_c2c1809d79eb120ea0cb8d342ad FOREIGN KEY ("vanity_url_code") REFERENCES "invites"("code") ON DELETE NO ACTION ON UPDATE NO ACTION`
+ );
+ }
+}
diff --git a/util/src/migrations/migrate_db_engine.ts b/util/src/migrations/migrate_db_engine.ts
index 527e7b53..886a16a0 100644
--- a/util/src/migrations/migrate_db_engine.ts
+++ b/util/src/migrations/migrate_db_engine.ts
@@ -1,6 +1,6 @@
import { config } from "dotenv";
config();
-import { BaseEntity, createConnection, EntityTarget } from "typeorm";
+import { createConnection, EntityTarget } from "typeorm";
import { initDatabase } from "../util/Database";
import "missing-native-js-functions";
import {
@@ -31,7 +31,7 @@ import {
async function main() {
if (!process.env.TO) throw new Error("TO database env connection string not set");
- // manually arrange them because of foreign key
+ // manually arrange them because of foreign keys
const entities = [
User,
Guild,
@@ -56,7 +56,7 @@ async function main() {
Attachment,
];
- const newDB = await initDatabase();
+ const oldDB = await initDatabase();
const type = process.env.TO.includes("://") ? process.env.TO.split(":")[0]?.replace("+srv", "") : "sqlite";
const isSqlite = type.includes("sqlite");
@@ -75,6 +75,7 @@ async function main() {
for (const e of entities) {
const entity = e as EntityTarget<any>;
const entries = await oldDB.manager.find(entity);
+
// @ts-ignore
console.log("migrating " + entries.length + " " + entity.name + " ...");
@@ -117,6 +118,7 @@ async function main() {
// await newDB.manager.update(entity, { id: entry.id }, entry);
// }
}
+
// @ts-ignore
console.log("migrated " + entries.length + " " + entity.name);
}
|