mirror of
https://github.com/fosrl/pangolin.git
synced 2026-01-28 22:00:51 +00:00
78 lines
1.6 KiB
TypeScript
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;
|
|
}
|
|
}
|