mirror of
https://github.com/fosrl/pangolin.git
synced 2025-12-16 04:57:52 +00:00
Update migrations
This commit is contained in:
@@ -17,10 +17,16 @@ export default async function migration() {
|
||||
try {
|
||||
const resources = db
|
||||
.prepare(
|
||||
"SELECT resourceId FROM resources WHERE siteId IS NOT NULL"
|
||||
"SELECT resourceId FROM resources"
|
||||
)
|
||||
.all() as Array<{ resourceId: number }>;
|
||||
|
||||
const siteResources = db
|
||||
.prepare(
|
||||
"SELECT siteResourceId FROM siteResources"
|
||||
)
|
||||
.all() as Array<{ siteResourceId: number }>;
|
||||
|
||||
db.transaction(() => {
|
||||
db.exec(`
|
||||
ALTER TABLE 'exitNodes' ADD 'region' text;
|
||||
@@ -30,6 +36,7 @@ export default async function migration() {
|
||||
ALTER TABLE 'targets' ADD 'pathMatchType' text;
|
||||
ALTER TABLE 'targets' ADD 'path' text;
|
||||
ALTER TABLE 'resources' ADD 'headers' text;
|
||||
ALTER TABLE 'siteResources' ADD 'niceId' text NOT NULL;
|
||||
`); // this diverges from the schema a bit because the schema does not have a default on niceId but was required for the migration and I dont think it will effect much down the line...
|
||||
|
||||
const usedNiceIds: string[] = [];
|
||||
@@ -54,6 +61,27 @@ export default async function migration() {
|
||||
`UPDATE resources SET niceId = ? WHERE resourceId = ?`
|
||||
).run(niceId, resourceId.resourceId);
|
||||
}
|
||||
|
||||
for (const resourceId of siteResources) {
|
||||
// Generate a unique name and ensure it's unique
|
||||
let niceId = "";
|
||||
let loops = 0;
|
||||
while (true) {
|
||||
if (loops > 100) {
|
||||
throw new Error("Could not generate a unique name");
|
||||
}
|
||||
|
||||
niceId = generateName();
|
||||
if (!usedNiceIds.includes(niceId)) {
|
||||
usedNiceIds.push(niceId);
|
||||
break;
|
||||
}
|
||||
loops++;
|
||||
}
|
||||
db.prepare(
|
||||
`UPDATE siteResources SET niceId = ? WHERE siteResourceId = ?`
|
||||
).run(niceId, resourceId.siteResourceId);
|
||||
}
|
||||
})();
|
||||
|
||||
console.log(`Migrated database`);
|
||||
|
||||
Reference in New Issue
Block a user