stackpress
Version:
Incept is a content management framework.
35 lines (34 loc) • 1.17 kB
JavaScript
import Revisions from '../client/Revisions';
import { sequence } from '../sql/helpers';
export default async function install(server, database) {
const config = server.config('client') || {};
const client = server.plugin('client') || {};
const models = Object.values(client.model);
const queries = [];
const order = sequence(models.map(model => model.config));
for (const model of order) {
queries.push(database.dialect.drop(model.snake));
}
for (const model of order.reverse()) {
const exists = models.find(map => map.config.name === model.name);
if (exists) {
const create = exists.schema;
create.engine = database;
queries.push(...create.query());
}
}
if (config.revisions) {
const revisions = new Revisions(config.revisions, server.loader);
if (revisions.size() === 0) {
revisions.insert(client.config);
}
}
if (queries.length) {
await database.transaction(async (connection) => {
for (const query of queries) {
await connection.query(query);
}
});
}
}
;