diff --git a/server/setup/migrationsSqlite.ts b/server/setup/migrationsSqlite.ts index 03dae4c81..bc68ba3aa 100644 --- a/server/setup/migrationsSqlite.ts +++ b/server/setup/migrationsSqlite.ts @@ -44,6 +44,7 @@ import m38 from "./scriptsSqlite/1.18.0"; import m39 from "./scriptsSqlite/1.18.3"; import m40 from "./scriptsSqlite/1.18.4"; import m41 from "./scriptsSqlite/1.19.0"; +import m42 from "./scriptsSqlite/1.19.1"; // THIS CANNOT IMPORT ANYTHING FROM THE SERVER // EXCEPT FOR THE DATABASE AND THE SCHEMA @@ -85,7 +86,8 @@ const migrations = [ { version: "1.18.0", run: m38 }, { version: "1.18.3", run: m39 }, { version: "1.18.4", run: m40 }, - { version: "1.19.0", run: m41 } + { version: "1.19.0", run: m41 }, + { version: "1.19.1", run: m42 } // Add new migrations here as they are created ] as const; diff --git a/server/setup/scriptsSqlite/1.19.0.ts b/server/setup/scriptsSqlite/1.19.0.ts index c69356cae..e27332482 100644 --- a/server/setup/scriptsSqlite/1.19.0.ts +++ b/server/setup/scriptsSqlite/1.19.0.ts @@ -680,25 +680,6 @@ export default async function migration() { deleteResourceRules.run(resource.resourceId); deleteResourceWhitelist.run(resource.resourceId); } - // remove not null/default from sso, applyRules, and emailWhitelistEnabled in preparation for resource policies - db.prepare(`ALTER TABLE 'resources' DROP COLUMN 'sso';`).run(); - db.prepare( - `ALTER TABLE 'resources' ADD COLUMN 'sso' integer;` - ).run(); - - db.prepare( - `ALTER TABLE 'resources' DROP COLUMN 'applyRules';` - ).run(); - db.prepare( - `ALTER TABLE 'resources' ADD COLUMN 'applyRules' integer;` - ).run(); - - db.prepare( - `ALTER TABLE 'resources' DROP COLUMN 'emailWhitelistEnabled';` - ).run(); - db.prepare( - `ALTER TABLE 'resources' ADD COLUMN 'emailWhitelistEnabled' integer;` - ).run(); }); migrateInlinePolicies(); @@ -707,6 +688,29 @@ export default async function migration() { ); } + // add one more transaction + db.transaction(() => { + // remove not null/default from sso, applyRules, and emailWhitelistEnabled in preparation for resource policies + db.prepare(`ALTER TABLE 'resources' DROP COLUMN 'sso';`).run(); + db.prepare( + `ALTER TABLE 'resources' ADD COLUMN 'sso' integer;` + ).run(); + + db.prepare( + `ALTER TABLE 'resources' DROP COLUMN 'applyRules';` + ).run(); + db.prepare( + `ALTER TABLE 'resources' ADD COLUMN 'applyRules' integer;` + ).run(); + + db.prepare( + `ALTER TABLE 'resources' DROP COLUMN 'emailWhitelistEnabled';` + ).run(); + db.prepare( + `ALTER TABLE 'resources' ADD COLUMN 'emailWhitelistEnabled' integer;` + ).run(); + })(); + console.log("Migrated database"); } catch (e) { console.log("Failed to migrate db:", e); diff --git a/server/setup/scriptsSqlite/1.19.1.ts b/server/setup/scriptsSqlite/1.19.1.ts new file mode 100644 index 000000000..3ac8efd3b --- /dev/null +++ b/server/setup/scriptsSqlite/1.19.1.ts @@ -0,0 +1,59 @@ +import { APP_PATH, __DIRNAME } from "@server/lib/consts"; +import Database from "better-sqlite3"; +import path from "path"; + +const version = "1.19.1"; + +export default async function migration() { + console.log(`Running setup script ${version}...`); + + const location = path.join(APP_PATH, "db", "db.sqlite"); + const db = new Database(location); + + try { + db.transaction(() => { + // remove not null/default from sso, applyRules, and emailWhitelistEnabled in preparation for resource policies + db.prepare( + `ALTER TABLE 'resources' ADD COLUMN 'sso2' integer;` + ).run(); + db.prepare(`UPDATE 'resources' SET "sso2" = "sso";`).run(); + db.prepare(`ALTER TABLE 'resources' DROP COLUMN 'sso';`).run(); + db.prepare( + `ALTER TABLE 'resources' RENAME COLUMN 'sso2' TO 'sso';` + ).run(); + + db.prepare( + `ALTER TABLE 'resources' ADD COLUMN 'applyRules2' integer;` + ).run(); + db.prepare( + `UPDATE 'resources' SET "applyRules2" = "applyRules";` + ).run(); + db.prepare( + `ALTER TABLE 'resources' DROP COLUMN 'applyRules';` + ).run(); + db.prepare( + `ALTER TABLE 'resources' RENAME COLUMN 'applyRules2' TO 'applyRules';` + ).run(); + + db.prepare( + `ALTER TABLE 'resources' ADD COLUMN 'emailWhitelistEnabled2' integer;` + ).run(); + db.prepare( + `UPDATE 'resources' SET "emailWhitelistEnabled2" = "emailWhitelistEnabled";` + ).run(); + db.prepare( + `ALTER TABLE 'resources' DROP COLUMN 'emailWhitelistEnabled';` + ).run(); + db.prepare( + `ALTER TABLE 'resources' RENAME COLUMN 'emailWhitelistEnabled2' TO 'emailWhitelistEnabled';` + ).run(); + })(); + + console.log("Migrated database"); + } catch (e) { + console.log("Failed to migrate db:", e); + throw e; + } + + console.log(`${version} migration complete`); +}