mirror of
https://github.com/fosrl/pangolin.git
synced 2025-07-21 11:15:13 +02:00
adjustments to migration after testing
This commit is contained in:
parent
e4789c6b08
commit
de70c62ea8
5 changed files with 139 additions and 62 deletions
|
@ -3,38 +3,14 @@ import { configFilePath1, configFilePath2 } from "@server/lib/consts";
|
|||
import fs from "fs";
|
||||
import yaml from "js-yaml";
|
||||
import { sql } from "drizzle-orm";
|
||||
import { domains, orgDomains, resources } from "@server/db/schema";
|
||||
|
||||
const version = "1.0.0-beta.15";
|
||||
|
||||
export default async function migration() {
|
||||
console.log(`Running setup script ${version}...`);
|
||||
|
||||
try {
|
||||
db.transaction((trx) => {
|
||||
trx.run(sql`CREATE TABLE 'domains' (
|
||||
'domainId' text PRIMARY KEY NOT NULL,
|
||||
'baseDomain' text NOT NULL,
|
||||
'configManaged' integer DEFAULT false NOT NULL
|
||||
);`);
|
||||
|
||||
trx.run(sql`CREATE TABLE 'orgDomains' (
|
||||
'orgId' text NOT NULL,
|
||||
'domainId' text NOT NULL,
|
||||
FOREIGN KEY ('orgId') REFERENCES 'orgs'('orgId') ON UPDATE no action ON DELETE cascade,
|
||||
FOREIGN KEY ('domainId') REFERENCES 'domains'('domainId') ON UPDATE no action ON DELETE cascade
|
||||
);`);
|
||||
|
||||
trx.run(
|
||||
sql`ALTER TABLE 'resources' ADD 'domainId' text REFERENCES domains(domainId);`
|
||||
);
|
||||
trx.run(sql`ALTER TABLE 'orgs' DROP COLUMN 'domain';`);
|
||||
});
|
||||
|
||||
console.log(`Migrated database schema`);
|
||||
} catch (e) {
|
||||
console.log("Unable to migrate database schema");
|
||||
throw e;
|
||||
}
|
||||
let domain = "";
|
||||
|
||||
try {
|
||||
// Determine which config file exists
|
||||
|
@ -84,11 +60,68 @@ export default async function migration() {
|
|||
const updatedYaml = yaml.dump(rawConfig);
|
||||
fs.writeFileSync(filePath, updatedYaml, "utf8");
|
||||
|
||||
domain = baseDomain;
|
||||
|
||||
console.log(`Moved base_domain to new domains section`);
|
||||
} catch (e) {
|
||||
console.log(
|
||||
`Unable to migrate config file and move base_domain to domains. Error: ${e}`
|
||||
);
|
||||
throw e;
|
||||
}
|
||||
|
||||
try {
|
||||
db.transaction((trx) => {
|
||||
trx.run(sql`CREATE TABLE 'domains' (
|
||||
'domainId' text PRIMARY KEY NOT NULL,
|
||||
'baseDomain' text NOT NULL,
|
||||
'configManaged' integer DEFAULT false NOT NULL
|
||||
);`);
|
||||
|
||||
trx.run(sql`CREATE TABLE 'orgDomains' (
|
||||
'orgId' text NOT NULL,
|
||||
'domainId' text NOT NULL,
|
||||
FOREIGN KEY ('orgId') REFERENCES 'orgs'('orgId') ON UPDATE no action ON DELETE cascade,
|
||||
FOREIGN KEY ('domainId') REFERENCES 'domains'('domainId') ON UPDATE no action ON DELETE cascade
|
||||
);`);
|
||||
|
||||
trx.run(
|
||||
sql`ALTER TABLE 'resources' ADD 'domainId' text REFERENCES domains(domainId);`
|
||||
);
|
||||
trx.run(sql`ALTER TABLE 'orgs' DROP COLUMN 'domain';`);
|
||||
});
|
||||
|
||||
console.log(`Migrated database schema`);
|
||||
} catch (e) {
|
||||
console.log("Unable to migrate database schema");
|
||||
throw e;
|
||||
}
|
||||
|
||||
try {
|
||||
await db.transaction(async (trx) => {
|
||||
await trx
|
||||
.insert(domains)
|
||||
.values({
|
||||
domainId: "domain1",
|
||||
baseDomain: domain,
|
||||
configManaged: true
|
||||
})
|
||||
.execute();
|
||||
await trx.update(resources).set({ domainId: "domain1" });
|
||||
const existingOrgDomains = await trx.select().from(orgDomains);
|
||||
for (const orgDomain of existingOrgDomains) {
|
||||
await trx
|
||||
.insert(orgDomains)
|
||||
.values({ orgId: orgDomain.orgId, domainId: "domain1" })
|
||||
.execute();
|
||||
}
|
||||
});
|
||||
|
||||
console.log(`Updated resources table with new domainId`);
|
||||
} catch (e) {
|
||||
console.log(
|
||||
`Unable to update resources table with new domainId. Error: ${e}`
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue