summary refs log tree commit diff
diff options
context:
space:
mode:
authorMadeline <46743919+MaddyUnderStars@users.noreply.github.com>2022-12-18 21:54:20 +1100
committerMadeline <46743919+MaddyUnderStars@users.noreply.github.com>2022-12-18 22:14:12 +1100
commit32e9d1828cf9ce55b5179fe9338b82154b5bfeba (patch)
tree3670e773630724aa48ed4fe2d4c4604454e07071
parentRefactored testclient (diff)
downloadserver-32e9d1828cf9ce55b5179fe9338b82154b5bfeba.tar.xz
Move to migrations. Use `npm run generate:db` for first database generation.
-rw-r--r--package.json1
-rw-r--r--scripts/syncronise.js19
-rw-r--r--src/util/entities/BaseClass.ts1
-rw-r--r--src/util/entities/Config.ts2
-rw-r--r--src/util/util/Database.ts7
5 files changed, 22 insertions, 8 deletions
diff --git a/package.json b/package.json
index 3aa6095e..4d893f92 100644
--- a/package.json
+++ b/package.json
@@ -10,6 +10,7 @@
 		"start:gateway": "node dist/gateway/start.js",
 		"build": "tsc -p .",
 		"setup": "npm run build && npm run generate:schema",
+		"generate:db": "node scripts/syncronise.js",
 		"generate:rights": "node scripts/rights.js",
 		"generate:schema": "node scripts/schema.js",
 		"generate:client": "node scripts/client.js",
diff --git a/scripts/syncronise.js b/scripts/syncronise.js
new file mode 100644
index 00000000..6ce47278
--- /dev/null
+++ b/scripts/syncronise.js
@@ -0,0 +1,19 @@
+/*
+	"Why?" I hear you say! "Why don't you just use `typeorm schema:sync`?"!
+	Because we have a lot ( like, 30? ) cyclic imports in the entities folder,
+	which breaks that command entirely!
+
+	however!
+	it doesn't break the below, thus we're left with this :sob:
+*/
+
+require("module-alias/register");
+require("dotenv").config();
+const { initDatabase } = require("..");
+
+(async () => {
+	const db = await initDatabase();
+	console.log("synchronising");
+	await db.synchronize();
+	console.log("done");
+})();
\ No newline at end of file
diff --git a/src/util/entities/BaseClass.ts b/src/util/entities/BaseClass.ts
index cb97f513..025c747b 100644
--- a/src/util/entities/BaseClass.ts
+++ b/src/util/entities/BaseClass.ts
@@ -3,7 +3,6 @@ import {
 	BaseEntity,
 	BeforeInsert,
 	BeforeUpdate,
-	DeepPartial,
 	FindOptionsWhere,
 	ObjectIdColumn,
 	PrimaryColumn,
diff --git a/src/util/entities/Config.ts b/src/util/entities/Config.ts
index ff42b412..646737a0 100644
--- a/src/util/entities/Config.ts
+++ b/src/util/entities/Config.ts
@@ -2,9 +2,7 @@ import { Column, Entity } from "typeorm";
 import { BaseClassWithoutId, PrimaryIdColumn } from "./BaseClass";
 import crypto from "crypto";
 import { Snowflake } from "../util/Snowflake";
-import { SessionsReplace } from "..";
 import { hostname } from "os";
-import { Rights } from "../util/Rights";
 
 @Entity("config")
 export class ConfigEntity extends BaseClassWithoutId {
diff --git a/src/util/util/Database.ts b/src/util/util/Database.ts
index f2190bfc..87ee212f 100644
--- a/src/util/util/Database.ts
+++ b/src/util/util/Database.ts
@@ -1,8 +1,6 @@
 import path from "path";
 import "reflect-metadata";
 import { DataSource } from "typeorm";
-import * as Models from "../entities";
-import { Migration } from "../entities/Migration";
 import { yellow, green, red } from "picocolors";
 
 // UUID extension option is only supported with postgres
@@ -44,13 +42,12 @@ export async function initDatabase(): Promise<DataSource> {
 		url: isSqlite ? undefined : dbConnectionString,
 		database: isSqlite ? dbConnectionString : undefined,
 		entities: ["dist/util/entities/*.js"],
-		synchronize: type !== "mongodb",
+		synchronize: false,
 		logging: false,
 		bigNumberStrings: false,
 		supportBigNumbers: true,
 		name: "default",
-		// TODO migrations
-		// migrations: [path.join(__dirname, "..", "migrations", "*.js")],
+		migrations: ["dist/util/migrations/*.js"],
 	});
 
 	dbConnection = await dataSource.initialize();