Files
pangolin/server/setup/scriptsSqlite/1.10.1.ts
2025-09-17 22:54:29 -04:00

78 lines
1.6 KiB
TypeScript

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;
}
}