diff --git a/api/src/routes/guilds/#guild_id/vanity-url.ts b/api/src/routes/guilds/#guild_id/vanity-url.ts
index 061b317c..63173345 100644
--- a/api/src/routes/guilds/#guild_id/vanity-url.ts
+++ b/api/src/routes/guilds/#guild_id/vanity-url.ts
@@ -10,7 +10,7 @@ const InviteRegex = /\W/g;
router.get("/", route({ permission: "MANAGE_GUILD" }), async (req: Request, res: Response) => {
const { guild_id } = req.params;
- const invite = await Invite.findOne({ where: {guild_id: guild_id, vanity_url: true} });
+ const invite = await Invite.findOne({ where: { guild_id: guild_id, vanity_url: true } });
if (!invite) return res.json({ code: null });
return res.json({ code: invite.code, uses: invite.uses });
@@ -35,15 +35,7 @@ router.patch("/", route({ body: "VanityUrlSchema", permission: "MANAGE_GUILD" })
const { id } = await Channel.findOneOrFail({ guild_id, type: ChannelType.GUILD_TEXT });
- Promise.all([
- new Invite({
- code: code,
- uses: 0,
- created_at: new Date(),
- guild_id,
- channel_id: id
- }).save()
- ]);
+ await Invite.update({ vanity_url: true, guild_id }, { code: code, channel_id: id });
return res.json({ code: code });
});
diff --git a/bundle/package.json b/bundle/package.json
index eedbdd8c..404c6758 100644
--- a/bundle/package.json
+++ b/bundle/package.json
@@ -9,7 +9,7 @@
"start": "node scripts/build.js && node dist/bundle/src/start.js",
"start:bundle": "node dist/bundle/src/start.js",
"test": "echo \"Error: no test specified\" && exit 1",
- "migrate": "node --require ts-node/register node_modules/typeorm/cli.js -f ../util/ormconfig.json migration:run"
+ "migrate": "cd ../util/ && npm i && node --require ts-node/register node_modules/typeorm/cli.js -f ../util/ormconfig.json migration:run"
},
"repository": {
"type": "git",
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 33024a8d..cd578fb2 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 {
@@ -15,7 +15,6 @@ import {
Invite,
Member,
Message,
- RateLimit,
ReadState,
Recipient,
Relationship,
@@ -30,9 +29,9 @@ import {
} from "..";
async function main() {
- if (!process.env.FROM) throw new Error("FROM database env connection string not set");
+ 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,
@@ -57,12 +56,12 @@ async function main() {
Attachment,
];
- const newDB = await initDatabase();
+ const oldDB = await initDatabase();
// @ts-ignore
- const oldDB = await createConnection({
- type: process.env.FROM.split(":")[0]?.replace("+srv", ""),
- url: process.env.FROM,
+ const newDB = await createConnection({
+ type: process.env.TO.split(":")[0]?.replace("+srv", ""),
+ url: process.env.TO,
entities,
name: "old",
});
@@ -73,13 +72,12 @@ async function main() {
const entity = e as EntityTarget<any>;
const entries = await oldDB.manager.find(entity);
//@ts-ignore
- console.log("migrated " + entries.length + " " + entity.name);
+ console.log("migrating " + entries.length + " " + entity.name + " ...");
for (const entry of entries) {
console.log(i++);
if (entry instanceof User) {
- console.log("instance of User");
if (entry.bio == null) entry.bio = "";
if (entry.rights == null) entry.rights = "0";
if (entry.disabled == null) entry.disabled = false;
@@ -115,8 +113,9 @@ async function main() {
// await newDB.manager.update(entity, { id: entry.id }, entry);
// }
}
+
// @ts-ignore
- console.log("migrated all " + entity.name);
+ console.log("migrating " + entries.length + " " + entity.name + " ...");
}
} catch (error) {
console.error((error as any).message);
|