@paroicms/site-generator-plugin
Version:
ParoiCMS Site Generator Plugin
35 lines (34 loc) • 1.46 kB
JavaScript
import { executeDdl, generateDatabaseId, setMetadataDbSchemaVersion, setMetadataValue, } from "@paroicms/internal-server-lib";
export const dbSchemaName = "site-generator";
export const currentDbSchemaVersion = 4;
export async function migrateSiteGeneratorDb(cn, { fromVersion, logger, ddlFile }) {
const toVersion = currentDbSchemaVersion;
let currentVersion = fromVersion;
if (currentVersion === 1) {
await cn.raw("drop table PaGenSession");
await cn.raw("drop table PaMetadata");
await executeDdl(cn, ddlFile);
currentVersion = currentDbSchemaVersion;
}
if (currentVersion === 2) {
const databaseId = generateDatabaseId();
await setMetadataValue(cn, {
dbSchemaName,
key: "databaseId",
value: databaseId,
});
await setMetadataDbSchemaVersion(cn, { dbSchemaName, value: 3 });
currentVersion = 3;
}
if (currentVersion === 3) {
await cn.schema.table("PgIssueEvent", (table) => {
table.string("siteId", 100).nullable();
});
await setMetadataDbSchemaVersion(cn, { dbSchemaName, value: 4 });
currentVersion = 4;
}
if (currentVersion !== toVersion) {
throw new Error(`version of ${dbSchemaName} database should be '${toVersion}', but is '${currentVersion}'`);
}
logger.info(`${dbSchemaName} database was migrated from ${fromVersion} to ${currentVersion}`);
}