migrate siteId on targets table to delete on cascade

This commit is contained in:
miloschwartz
2025-09-17 22:54:29 -04:00
parent 62cf925dcf
commit 6d7091fb5c
2 changed files with 79 additions and 0 deletions

View File

@@ -27,6 +27,7 @@ import m22 from "./scriptsSqlite/1.7.0";
import m23 from "./scriptsSqlite/1.8.0";
import m24 from "./scriptsSqlite/1.9.0";
import m25 from "./scriptsSqlite/1.10.0";
import m26 from "./scriptsSqlite/1.10.1";
// THIS CANNOT IMPORT ANYTHING FROM THE SERVER
// EXCEPT FOR THE DATABASE AND THE SCHEMA
@@ -53,6 +54,7 @@ const migrations = [
{ version: "1.8.0", run: m23 },
{ version: "1.9.0", run: m24 },
{ version: "1.10.0", run: m25 },
{ version: "1.10.1", run: m26 },
// Add new migrations here as they are created
] as const;

View File

@@ -0,0 +1,77 @@
import { __DIRNAME, APP_PATH } from "@server/lib/consts";
import Database from "better-sqlite3";
import path from "path";
const version = "1.10.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.pragma("foreign_keys = OFF");
db.transaction(() => {
db.exec(`PRAGMA foreign_keys = OFF;
-- 1. Rename the old table
ALTER TABLE targets RENAME TO targets_old;
-- 2. Create the new table
CREATE TABLE targets (
targetId INTEGER PRIMARY KEY AUTOINCREMENT,
resourceId INTEGER NOT NULL,
siteId INTEGER NOT NULL,
ip TEXT NOT NULL,
method TEXT,
port INTEGER NOT NULL,
internalPort INTEGER,
enabled INTEGER NOT NULL DEFAULT 1,
path TEXT,
pathMatchType TEXT,
FOREIGN KEY (resourceId) REFERENCES resources(resourceId) ON DELETE CASCADE,
FOREIGN KEY (siteId) REFERENCES sites(siteId) ON DELETE CASCADE
);
-- 3. Copy data *from the old table*
INSERT INTO targets (
targetId,
resourceId,
siteId,
ip,
method,
port,
internalPort,
enabled,
path,
pathMatchType
)
SELECT
targetId,
resourceId,
siteId,
ip,
method,
port,
internalPort,
enabled,
path,
pathMatchType
FROM targets_old;
-- 4. Drop the old table
DROP TABLE targets_old;
PRAGMA foreign_keys = ON;`);
});
db.pragma("foreign_keys = ON");
console.log(`Migrated database`);
} catch (e) {
console.log("Failed to migrate db:", e);
throw e;
}
}