mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-18 09:05:59 +00:00
missing file
This commit is contained in:
66
packages/api/src/utility/exportDbModelSql.js
Normal file
66
packages/api/src/utility/exportDbModelSql.js
Normal file
@@ -0,0 +1,66 @@
|
||||
const fs = require('fs-extra');
|
||||
const path = require('path');
|
||||
const yaml = require('js-yaml');
|
||||
const { mkdirp } = require('mkdirp');
|
||||
|
||||
async function exportDbModelSql(dbModel, driver, outputDir, outputFile) {
|
||||
const { tables, views, procedures, functions, triggers, matviews } = dbModel;
|
||||
|
||||
async function writeLists(writeList) {
|
||||
await writeList(views, 'views');
|
||||
await writeList(procedures, 'procedures');
|
||||
await writeList(functions, 'functions');
|
||||
await writeList(triggers, 'triggers');
|
||||
await writeList(matviews, 'matviews');
|
||||
}
|
||||
|
||||
if (outputFile) {
|
||||
const dmp = driver.createDumper();
|
||||
for (const table of tables || []) {
|
||||
dmp.createTable({
|
||||
...table,
|
||||
foreignKeys: [],
|
||||
dependencies: [],
|
||||
});
|
||||
}
|
||||
for (const table of tables || []) {
|
||||
for (const fk of table.foreignKeys || []) {
|
||||
dmp.createForeignKey(fk);
|
||||
}
|
||||
}
|
||||
writeLists((list, folder) => {
|
||||
for (const obj of list || []) {
|
||||
dmp.createSqlObject(obj);
|
||||
}
|
||||
});
|
||||
|
||||
const script = dmp.s;
|
||||
await fs.writeFile(outputFile, script);
|
||||
}
|
||||
|
||||
if (outputDir) {
|
||||
await mkdirp(path.join(outputDir, 'tables'));
|
||||
for (const table of tables || []) {
|
||||
const dmp = driver.createDumper();
|
||||
dmp.createTable({
|
||||
...table,
|
||||
foreignKeys: [],
|
||||
dependencies: [],
|
||||
});
|
||||
await fs.writeFile(path.join(outputDir, 'tables', `${table.pureName}.sql`), dmp.s);
|
||||
}
|
||||
|
||||
await writeLists(async (list, folder) => {
|
||||
if (list.length > 0) {
|
||||
await mkdirp(path.join(outputDir, folder));
|
||||
}
|
||||
for (const obj of list || []) {
|
||||
const dmp = driver.createDumper();
|
||||
dmp.createSqlObject(obj);
|
||||
await fs.writeFile(path.join(outputDir, folder, `${obj.pureName}.sql`), dmp.s);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = exportDbModelSql;
|
||||
Reference in New Issue
Block a user