@paroicms/site-generator-plugin
Version:
ParoiCMS Site Generator Plugin
38 lines (37 loc) • 1.35 kB
JavaScript
import { createOrOpenSqliteConnection, createSqlLogger, getMetadataDbSchemaVersion, } from "@paroicms/internal-server-lib";
import { join } from "node:path";
import { projectDir } from "../context.js";
import { currentDbSchemaVersion, dbSchemaName, migrateSiteGeneratorDb } from "./ddl-migration.js";
export async function createOrOpenSiteGeneratorConnection({ sqliteFile, canCreate, logger, }) {
const { logNextQuery, knexLogger } = createSqlLogger({ logger, dbSchemaName });
const ddlFile = join(projectDir, "ddl", "site-generator.ddl.sql");
const { cn } = await createOrOpenSqliteConnection({
canCreate,
dbSchemaName,
sqliteFile,
ddlFile,
migrateDb,
knexLogger,
logger,
});
async function migrateDb(cn) {
const dbVersion = await getMetadataDbSchemaVersion(cn, { dbSchemaName });
if (dbVersion === currentDbSchemaVersion) {
return {
migrated: false,
schemaVersion: dbVersion,
};
}
await migrateSiteGeneratorDb(cn, {
fromVersion: dbVersion,
logger,
ddlFile,
});
return {
migrated: true,
fromVersion: dbVersion,
schemaVersion: currentDbSchemaVersion,
};
}
return { cn, logNextQuery };
}