66 lines
3.6 KiB
JavaScript
66 lines
3.6 KiB
JavaScript
"use strict";
|
|
exports.id = 4194;
|
|
exports.ids = [4194];
|
|
exports.modules = {
|
|
|
|
/***/ 4194:
|
|
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
|
|
// @ts-check
|
|
|
|
const fs = __webpack_require__(7147);
|
|
const os = __webpack_require__(2037);
|
|
const { execSync } = __webpack_require__(2081);
|
|
const serverError = __webpack_require__(2163);
|
|
const { ServerResponse } = __webpack_require__(3685);
|
|
/** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /**
|
|
* ==============================================================================
|
|
* Main Function
|
|
* ==============================================================================
|
|
* @param {Object} params - Single object parameter
|
|
* @param {string} params.dbName - Database Full Name
|
|
* @param {import("@/package-shared/types").UserType} params.user - Database Full Name
|
|
* @param {ServerResponse} params.res - Http response object
|
|
*/ module.exports = async function exportDb({ dbName , user , res }) {
|
|
const mysqlDumpPath = os.platform().match(/win/i) ? "'" + "C:\\Program Files\\MySQL\\MySQL Server 8.0\\bin\\mysqldump.exe" + "'" : "mysqldump";
|
|
try {
|
|
/** @type {import("child_process").ExecSyncOptions} */ let execSyncOptions = {
|
|
cwd: process.cwd()
|
|
};
|
|
const filePath = `./jsonData/dbSchemas/users/user-${user.id}/export.sql`;
|
|
if (os.platform().match(/win/i)) execSyncOptions.shell = "bash.exe";
|
|
const exe = `${mysqlDumpPath} -u ${process.env.DSQL_DB_USERNAME} -h ${process.env.DSQL_DB_HOST} -p${process.env.DSQL_DB_PASSWORD} ${dbName} > ${filePath}`;
|
|
console.log(`exportDb.js exe => ${exe}`);
|
|
const dumpDb = execSync(exe, execSyncOptions);
|
|
// const file = fs.createWriteStream(filePath);
|
|
res.setHeader("Content-Type", "application/zip");
|
|
res.setHeader("Content-Disposition", `attachment; filename=export.sql`);
|
|
const fileStream = fs.createReadStream(filePath);
|
|
/** ********************* Write response header */ fileStream.pipe(res);
|
|
// res.pipe(file);
|
|
// res.writeHead(200);
|
|
// await new Promise((resolve, reject) => {
|
|
// file.on("finish", () => {
|
|
// // res.pipe(file);
|
|
// resolve(true);
|
|
// });
|
|
// });
|
|
// return fs.readFileSync(filePath, "utf-8");
|
|
// return file;
|
|
////////////////////////////////////////
|
|
////////////////////////////////////////
|
|
////////////////////////////////////////
|
|
} catch (/** @type {any} */ error) {
|
|
serverError({
|
|
component: "/functions/backend/exportDb/lines-30-46",
|
|
message: error.message,
|
|
user: user
|
|
});
|
|
}
|
|
}; /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */
|
|
|
|
|
|
/***/ })
|
|
|
|
};
|
|
; |