summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--api/assets/schemas.json5
-rw-r--r--api/src/routes/guilds/#guild_id/roles.ts6
-rw-r--r--util/src/migrations/migrate_db_engine.js (renamed from util/src/migrations/migrate_db_engine.ts)59
3 files changed, 23 insertions, 47 deletions
diff --git a/api/assets/schemas.json b/api/assets/schemas.json
index 4f1ab9a8..2ceaa923 100644
--- a/api/assets/schemas.json
+++ b/api/assets/schemas.json
@@ -2909,6 +2909,9 @@
                 }
             }
         },
+        "required": [
+            "image"
+        ],
         "definitions": {
             "ChannelPermissionOverwriteType": {
                 "enum": [
@@ -4744,7 +4747,7 @@
                 "type": "string"
             },
             "permissions": {
-                "type": "bigint"
+                "type": "string"
             },
             "color": {
                 "type": "integer"
diff --git a/api/src/routes/guilds/#guild_id/roles.ts b/api/src/routes/guilds/#guild_id/roles.ts
index 0a57c6a2..b1875598 100644
--- a/api/src/routes/guilds/#guild_id/roles.ts
+++ b/api/src/routes/guilds/#guild_id/roles.ts
@@ -17,7 +17,7 @@ const router: Router = Router();
 
 export interface RoleModifySchema {
 	name?: string;
-	permissions?: bigint;
+	permissions?: string;
 	color?: number;
 	hoist?: boolean; // whether the role should be displayed separately in the sidebar
 	mentionable?: boolean; // whether the role should be mentionable
@@ -57,7 +57,7 @@ router.post("/", route({ body: "RoleModifySchema", permission: "MANAGE_ROLES" })
 		...body,
 		guild_id: guild_id,
 		managed: false,
-		permissions: String(req.permission!.bitfield & (body.permissions || BigInt("0"))),
+		permissions: String(req.permission!.bitfield & BigInt(body.permissions || "0")),
 		tags: undefined
 	});
 
@@ -109,7 +109,7 @@ router.patch("/:role_id", route({ body: "RoleModifySchema", permission: "MANAGE_
 		...body,
 		id: role_id,
 		guild_id,
-		permissions: String(req.permission!.bitfield & (body.permissions || BigInt("0")))
+		permissions: String(req.permission!.bitfield & BigInt(body.permissions || "0"))
 	});
 
 	await Promise.all([
diff --git a/util/src/migrations/migrate_db_engine.ts b/util/src/migrations/migrate_db_engine.js
index 527e7b53..7b8b5784 100644
--- a/util/src/migrations/migrate_db_engine.ts
+++ b/util/src/migrations/migrate_db_engine.js
@@ -1,15 +1,14 @@
-import { config } from "dotenv";
+const { config } = require("dotenv");
 config();
-import { BaseEntity, createConnection, EntityTarget } from "typeorm";
-import { initDatabase } from "../util/Database";
-import "missing-native-js-functions";
-import {
+const { createConnection } = require("typeorm");
+const { initDatabase } = require("../../dist/util/Database");
+require("missing-native-js-functions");
+const {
 	Application,
 	Attachment,
 	Ban,
 	Channel,
 	ConnectedAccount,
-	defaultSettings,
 	Emoji,
 	Guild,
 	Invite,
@@ -26,7 +25,7 @@ import {
 	User,
 	VoiceState,
 	Webhook,
-} from "..";
+} = require("../../dist/entities/index");
 
 async function main() {
 	if (!process.env.TO) throw new Error("TO database env connection string not set");
@@ -72,8 +71,7 @@ async function main() {
 	let i = 0;
 
 	try {
-		for (const e of entities) {
-			const entity = e as EntityTarget<any>;
+		for (const entity of entities) {
 			const entries = await oldDB.manager.find(entity);
 			// @ts-ignore
 			console.log("migrating " + entries.length + " " + entity.name + " ...");
@@ -81,47 +79,22 @@ async function main() {
 			for (const entry of entries) {
 				console.log(i++);
 
-				if (entry instanceof User) {
-					if (entry.bio == null) entry.bio = "";
-					if (entry.rights == null) entry.rights = "0";
-					if (entry.disabled == null) entry.disabled = false;
-					if (entry.fingerprints == null) entry.fingerprints = [];
-					if (entry.deleted == null) entry.deleted = false;
-					if (entry.data == null) {
-						entry.data = {
-							valid_tokens_since: new Date(0),
-							hash: undefined,
-						};
-						// @ts-ignore
-						if (entry.user_data) {
-							// TODO: relationships
-							entry.data = {
-								// @ts-ignore
-								valid_tokens_since: entry.user_data.valid_tokens_since, // @ts-ignore
-								hash: entry.user_data.hash,
-							};
-						}
-					}
-					// @ts-ignore
-					if (entry.settings == null) {
-						entry.settings = defaultSettings;
-						// @ts-ignore
-						if (entry.user_data) entry.settings = entry.user_settings;
+				try {
+					await newDB.manager.insert(entity, entry);
+				} catch (error) {
+					try {
+						if (!entry.id) throw new Error("object doesn't have a unique id: " + entry);
+						await newDB.manager.update(entity, { id: entry.id }, entry);
+					} catch (error) {
+						console.error("couldn't migrate " + i + " " + entity.name, error);
 					}
 				}
-
-				// try {
-				await newDB.manager.insert(entity, entry);
-				// } catch (error) {
-				// 	if (!entry.id) throw new Error("object doesn't have a unique id: " + entry);
-				// 	await newDB.manager.update(entity, { id: entry.id }, entry);
-				// }
 			}
 			// @ts-ignore
 			console.log("migrated " + entries.length + " " + entity.name);
 		}
 	} catch (error) {
-		console.error((error as any).message);
+		console.error(error.message);
 	}
 
 	console.log("SUCCESS migrated all data");