@paroicms/server
Version:
The ParoiCMS server
38 lines • 1.78 kB
JavaScript
import { messageOf } from "@paroicms/public-anywhere-lib";
import { ApiError, siteSchemaFormatVersion } from "@paroicms/public-server-lib";
import { getSiteContext, unloadSiteContext } from "../../site-context/site-context.js";
import { migrateSiteSchema } from "../../site-schema-migration/site-schema-migration.js";
import { permissionGuard } from "../auth/authorization.helper.js";
export const migrationResolvers = {
Query: {
migrationInfo: async (_parent, _args, { siteContext, httpContext }) => {
await permissionGuard(siteContext, httpContext, "maintenance");
if (siteContext.status !== "migration") {
throw new ApiError("Site is not in migration mode", 400);
}
return {
currentSiteSchemaVersion: siteContext.deprecatedSiteSchema.ParoiCMSSiteSchemaFormatVersion,
targetSiteSchemaVersion: siteSchemaFormatVersion,
};
},
},
Mutation: {
runSiteSchemaMigrations: async (_parent, _args, { siteContext, httpContext }) => {
await permissionGuard(siteContext, httpContext, "maintenance");
if (siteContext.status !== "migration") {
throw new Error("Site is not in migration mode");
}
try {
await migrateSiteSchema(siteContext);
await unloadSiteContext(siteContext, { inRequest: true });
await getSiteContext(siteContext.fqdn);
return true;
}
catch (error) {
siteContext.logger.error("Migration failed", error);
throw new Error(`Migration failed: ${messageOf(error)}`);
}
},
},
};
//# sourceMappingURL=migration.resolver.js.map