69 lines
1.5 KiB
TypeScript
69 lines
1.5 KiB
TypeScript
import { 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(`ALTER TABLE "targets" RENAME TO "targets_old";
|
|
--> statement-breakpoint
|
|
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 UPDATE no action ON DELETE cascade,
|
|
FOREIGN KEY ("siteId") REFERENCES "sites"("siteId") ON UPDATE no action ON DELETE cascade
|
|
);
|
|
--> statement-breakpoint
|
|
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";
|
|
--> statement-breakpoint
|
|
DROP TABLE "targets_old";`);
|
|
})();
|
|
|
|
db.pragma("foreign_keys = ON");
|
|
|
|
console.log(`Migrated database`);
|
|
} catch (e) {
|
|
console.log("Failed to migrate db:", e);
|
|
throw e;
|
|
}
|
|
}
|