UNPKG

stackpress

Version:

Incept is a content management framework.

38 lines (37 loc) 1.38 kB
import Revisions from '../client/Revisions.js'; import { sequence } from '../sql/helpers.js'; export default async function install(server, database, cli) { 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) { cli?.verbose && cli.control.system('Installing...'); await database.transaction(async (connection) => { for (const query of queries) { cli?.verbose && cli.control.info(query.query); await connection.query(query); } }); cli?.verbose && cli.control.success('Installation Complete.'); } } ;