diff --git a/nix/modules/default/default.nix b/nix/modules/default/default.nix index ea541b97b..f20edcb2d 100644 --- a/nix/modules/default/default.nix +++ b/nix/modules/default/default.nix @@ -272,7 +272,7 @@ in CONFIG_READONLY = 1; PORT = toString cfg.gatewayEndpoint.localPort; STORAGE_LOCATION = cfg.cdnPath; - APPLY_DB_MIGRATIONS = false; + APPLY_DB_MIGRATIONS = "false"; } ); serviceConfig = { @@ -295,7 +295,7 @@ in CONFIG_READONLY = 1; PORT = toString cfg.cdnEndpoint.localPort; STORAGE_LOCATION = cfg.cdnPath; - APPLY_DB_MIGRATIONS = false; + APPLY_DB_MIGRATIONS = "false"; } ); serviceConfig = { diff --git a/nix/tests/test-bundle-starts.nix b/nix/tests/test-bundle-starts.nix index daebe5a1a..a90fe37ba 100644 --- a/nix/tests/test-bundle-starts.nix +++ b/nix/tests/test-bundle-starts.nix @@ -58,7 +58,6 @@ in }; testScript = '' - machine.wait_for_unit("spacebar-apply-migrations") machine.wait_for_unit("spacebar-api") machine.wait_for_unit("spacebar-cdn") machine.wait_for_unit("spacebar-gateway") diff --git a/src/gateway/util/Utils.ts b/src/gateway/util/Utils.ts index f60bfbf77..1757b8458 100644 --- a/src/gateway/util/Utils.ts +++ b/src/gateway/util/Utils.ts @@ -53,5 +53,9 @@ export async function cleanupOnStartup(): Promise { // }, //); - await VoiceState.clear(); + try { + await VoiceState.clear(); + } catch (e) { + console.error("Error clearing voice states on startup:", e); + } } diff --git a/src/util/config/types/OffloadConfiguration.ts b/src/util/config/types/OffloadConfiguration.ts index a84e8db86..b52919fb7 100644 --- a/src/util/config/types/OffloadConfiguration.ts +++ b/src/util/config/types/OffloadConfiguration.ts @@ -21,5 +21,6 @@ export class OffloadConfiguration { } export class GatewayOffloadConfiguration { + op12BaseUrl: string | null = null; op14BaseUrl: string | null = null; } diff --git a/src/util/util/Database.ts b/src/util/util/Database.ts index 13bcf3cc8..52168e9a0 100644 --- a/src/util/util/Database.ts +++ b/src/util/util/Database.ts @@ -20,7 +20,9 @@ import { config } from "dotenv"; import path from "path"; import { green, red, yellow } from "picocolors"; import { DataSource } from "typeorm"; +// noinspection ES6PreferShortImport import { ConfigEntity } from "../entities/Config"; +// noinspection ES6PreferShortImport import { Migration } from "../entities/Migration"; import fs from "fs"; @@ -41,6 +43,7 @@ const dbConnectionString = process.env.DATABASE || path.join(process.cwd(), "dat export const DatabaseType = dbConnectionString.includes("://") ? dbConnectionString.split(":")[0]?.replace("+srv", "") : "sqlite"; const isSqlite = DatabaseType.includes("sqlite"); +const applyMigrations = process.env.APPLY_DB_MIGRATIONS !== "false"; // For openapi.js... if (!isHeadlessProcess) { @@ -72,7 +75,7 @@ export const DataSourceOptions = isHeadlessProcess bigNumberStrings: false, supportBigNumbers: true, name: "default", - migrations: [path.join(__dirname, "..", "migration", DatabaseType, "*.js")], + migrations: applyMigrations ? [path.join(__dirname, "..", "migration", DatabaseType, "*.js")] : [], }); // Gets the existing database connection @@ -120,21 +123,26 @@ export async function initDatabase(): Promise { return false; } }; + if (applyMigrations) { + if (!(await dbExists())) { + console.log("[Database] This appears to be a fresh database. Running initial DDL."); + const qr = dbConnection.createQueryRunner(); + const initialPath = path.join(__dirname, "..", "migration", DatabaseType + "-initial.js"); + if (fs.existsSync(initialPath)) { + console.log("[Database] Found initial migration file, running it."); + await new (require(`../migration/${DatabaseType}-initial`).initial0)().up(qr); + } else console.log("[Database] No initial migration file found at '", initialPath, "', skipping."); + await qr.release(); + } - if (!(await dbExists())) { - console.log("[Database] This appears to be a fresh database. Running initial DDL."); - const qr = dbConnection.createQueryRunner(); - const initialPath = path.join(__dirname, "..", "migration", DatabaseType + "-initial.js"); - if (fs.existsSync(initialPath)) { - console.log("[Database] Found initial migration file, running it."); - await new (require(`../migration/${DatabaseType}-initial`).initial0)().up(qr); - } else console.log("[Database] No initial migration file found at '", initialPath, "', skipping."); - await qr.release(); - } - - if (process.env.APPLY_DB_MIGRATIONS !== "false") { - console.log("[Database] Applying missing migrations, if any."); + console.log("[Database] Applying missing migrations, if any.", process.env.APPLY_DB_MIGRATIONS); await dbConnection.runMigrations(); + } else { + console.log("[Database] Skipping migrations as per config."); + while (!(await dbExists())) { + console.log("[Database] Database does not exist, and we are not running migrations... Waiting 1 seconds..."); + await new Promise((r) => setTimeout(r, 5000)); + } } console.log(`[Database] ${green("Connected")}`);