From 904fc4d5005a4e0ff58d9c61e7ba762120ab2359 Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Wed, 6 Nov 2024 12:19:42 +0100 Subject: [PATCH] missing file --- packages/api/src/utility/exportDbModelSql.js | 66 ++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 packages/api/src/utility/exportDbModelSql.js diff --git a/packages/api/src/utility/exportDbModelSql.js b/packages/api/src/utility/exportDbModelSql.js new file mode 100644 index 000000000..65aa92fbd --- /dev/null +++ b/packages/api/src/utility/exportDbModelSql.js @@ -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;