"use strict";
exports.id = 2630;
exports.ids = [2630];
exports.modules = {

/***/ 2630:
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Z": () => (/* binding */ importExportTableDataFn)
/* harmony export */ });
/* harmony import */ var _package_shared_functions_backend_db_addDbEntry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5338);
/* harmony import */ var _package_shared_functions_backend_db_addDbEntry__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_package_shared_functions_backend_db_addDbEntry__WEBPACK_IMPORTED_MODULE_0__);
// @ts-check

const serverError = __webpack_require__(2163);
const DB_HANDLER = __webpack_require__(2224);
/** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /**
 * @typedef {object} ExportTableDataFnReturn
 * @property {any} [tableData]
 */ /**
 * ==============================================================================
 * @param {Object} params - Single object parameter
 * @param {"export" | "import"} params.paradigm
 * @param {string | number} params.userId
 * @param {string} params.dbName
 * @param {string} params.tableName
 * @param {any} params.payload
 * @param {"JSON" | "base64" | "object"} params.payloadType
 * @return {Promise<ExportTableDataFnReturn | null>}
 */ async function importExportTableDataFn({ paradigm , userId , dbName , tableName , payload , payloadType ,  }) {
    /** @type {ExportTableDataFnReturn} */ let returnObject = {};
    try {
        const dbFullName = `${process.env.DSQL_USER_DB_PREFIX}${userId}_${dbName.replace(/ /g, "")}`;
        switch(paradigm){
            case "export":
                const tableData = await DB_HANDLER(`SELECT * FROM \`${dbFullName}\`.\`${tableName}\``);
                returnObject["tableData"] = tableData;
                break;
            case "import":
                const jsonData = payloadType == "base64" ? Buffer.from(payload, "base64").toString() : payloadType == "JSON" ? payload : payload;
                const writeData = payloadType === "object" ? payload : JSON.parse(jsonData);
                for(let i = 0; i < writeData.length; i++){
                    const dataToWrite = writeData[i];
                    const newEntry = await _package_shared_functions_backend_db_addDbEntry__WEBPACK_IMPORTED_MODULE_0___default()({
                        data: dataToWrite,
                        dbFullName: dbFullName,
                        tableName: tableName,
                        dbContext: "Dsql User",
                        paradigm: "Full Access",
                        duplicateColumnName: "id",
                        duplicateColumnValue: dataToWrite?.id,
                        update: true
                    });
                    if (newEntry.error) {
                        throw new Error(newEntry.error);
                    }
                }
                break;
            default:
                return null;
        }
        return returnObject;
    } catch (/** @type {any} */ error) {
        serverError({
            component: "/functions/backend/importExportTableDataFn",
            message: error.message
        });
        return null;
    }
} /** ****************************************************************************** */  /** ****************************************************************************** */  /** ****************************************************************************** */  /** ****************************************************************************** */  /** ****************************************************************************** */  /** ****************************************************************************** */ 


/***/ })

};
;