export db model to directory

This commit is contained in:
Jan Prochazka
2021-09-25 09:50:36 +02:00
parent 8155813ee4
commit 1d31e1665c
6 changed files with 123 additions and 0 deletions

View File

@@ -0,0 +1,31 @@
const fs = require('fs-extra');
const path = require('path');
const yaml = require('js-yaml');
const { tableInfoToYaml } = require('dbgate-tools');
async function exportDbModel(dbModel, outputDir) {
const { tables, views, procedures, functions, triggers, matviews } = dbModel;
if (!fs.existsSync(outputDir)) {
await fs.mkdir(outputDir);
}
for (const table of tables || []) {
const content = yaml.dump(tableInfoToYaml(table));
await fs.writeFile(path.join(outputDir, `${table.pureName}.table.yaml`), content);
}
async function writeList(list, ext) {
for (const obj of list || []) {
await fs.writeFile(path.join(outputDir, `${obj.pureName}.${ext}.sql`), obj.createSql);
}
}
await writeList(views, 'view');
await writeList(procedures, 'proc');
await writeList(functions, 'func');
await writeList(triggers, 'trigger');
await writeList(matviews, 'matview');
}
module.exports = exportDbModel;