{"version":3,"sources":["jsdelivr-header.js","/npm/@andrew.michell88/db-mysql@1.0.0-202112040910/index.js"],"names":[],"mappings":"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","file":"/npm/@andrew.michell88/db-mysql@1.0.0-202112040910/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@andrew.michell88/db-mysql@1.0.0-202112040910/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","const base_logger = require('@andrew.michell88/base-logger');\r\nconst fs = require('fs');\r\nconst enumValue = require('./common/enum');\r\nconst service_name = enumValue.CONFIG.SERVICE_NAME;\r\nconst config = base_logger.getConfig(service_name);\r\nconst logger = base_logger.dataLog();\r\nconst queue = require('@andrew.michell88/base-queue').QueueAll;\r\nconst dateTime = base_logger.DateTime;\r\nlet dirName = null;\r\nlet is_db_processing = false;\r\nlet lstQueryPending = null;\r\nlet lstStorePending = null;\r\nlet isProcessing = false;\r\n\r\nlet db = null;\r\nlet db_sql = null;\r\nlet db_init = null;\r\nif (config.db.type == enumValue.DB_TYPE.MSSQL) {\r\n    dirName = `${process.cwd()}/src/sql_mssql`;\r\n    db = require('./helper/mssql/db');\r\n    db_sql = require('./helper/mssql/db_sql');\r\n    db_init = require('./helper/mssql/db_init');\r\n} else {\r\n    dirName = `${process.cwd()}/src/sql`;\r\n    db = require('./helper/mysql/db');\r\n    db_sql = require('./helper/mysql/db_sql');\r\n    db_init = require('./helper/mysql/db_init');\r\n}\r\n\r\nconst interValCheckDbProcess = setInterval(function res() {\r\n    logger.info(`timer_get_db: ${is_db_processing}`);\r\n    if (is_db_processing) {\r\n        if (lstQueryPending) {\r\n            logger.info('co list query pending');\r\n            for (const key in lstQueryPending) {\r\n                if (Reflect.has(lstQueryPending, key)) {\r\n                    const element = lstQueryPending[key];\r\n                    db.exec(element.query, (data, err) => {\r\n                        element.cb(data, err);\r\n                    });\r\n                }\r\n            }\r\n            lstQueryPending = null;\r\n        }\r\n        if (lstStorePending) {\r\n            logger.info('co list store pending');\r\n            for (const key in lstStorePending) {\r\n                if (Reflect.has(lstStorePending, key)) {\r\n                    const element = lstStorePending[key];\r\n                    db.run(element.store.name, element.store.params, (data, err) => {\r\n                        element.cb(data, err);\r\n                    });\r\n                }\r\n            }\r\n            lstStorePending = null;\r\n        }\r\n        if (!lstQueryPending && !lstStorePending) {\r\n            clearInterval(interValCheckDbProcess);\r\n        }\r\n    }\r\n}, 2 * 1000);\r\n\r\ndb_init.initDatabase(function res(data) {\r\n    is_db_processing = data;\r\n});\r\n\r\nconst execStringQuery = (strQuery, callback) => {\r\n    try {\r\n        if (!strQuery) return callback();\r\n        db_sql.executeTransaction(strQuery, function res(data, err) {\r\n            if (err) {\r\n                return callback(null, enumValue.ERROR_CODE.ExecuteTransaction);\r\n            }\r\n            return callback(data, null);\r\n        });\r\n    } catch (error) {\r\n        logger.error(error, enumValue.HEALTH_CHECK_TYPE.BUSINESS);\r\n    }\r\n};\r\nmodule.exports.execStringQuery = execStringQuery;\r\n\r\nconst exec = (lstQuery, callback, removeLog) => {\r\n    try {\r\n        // lstQuery la 1 list, trong do moi item gom cac property sau:\r\n        // action: ENTITY_ACTION: INSERT, UPDATE, DELETE, SELECT\r\n        // table: ten bang (*)\r\n        // fields: danh sach cac fields can lay, = null mac dinh lay *\r\n        // condition: dieu kien, view Readme\r\n        // order_by: {field: \"field can sort\", type: \"asc/desc\"}\r\n        // item_count: so ban ghi can lay\r\n        // data: object data for INSERT, UPDATE (only INSERT, UPDATE)\r\n\r\n        if (!is_db_processing && fs.existsSync(dirName)) {\r\n            logger.info('not init db');\r\n            // chua init db thi init\r\n            if (!lstQueryPending) {\r\n                lstQueryPending = [];\r\n            }\r\n            const timeCurrent = dateTime.getTimeMiliSeconds();\r\n            lstQueryPending[timeCurrent] = {\r\n                query: lstQuery,\r\n                cb: callback\r\n            };\r\n            if (!isProcessing) {\r\n                isProcessing = true;\r\n                db_init.initDatabase(function res(data) {\r\n                    is_db_processing = data;\r\n                    isProcessing = false;\r\n                });\r\n            }\r\n            return;\r\n        }\r\n        if (lstQuery.action === enumValue.ENTITY_ACTION.GET_PAGGING) {\r\n            db.execPaging(lstQuery, (data, err) => {\r\n                callback(data, err);\r\n            });\r\n        } else if (lstQuery.action === enumValue.ENTITY_ACTION.GET_PAGGING_UNION) {\r\n            db.execPagingUnion(lstQuery, (data, err) => {\r\n                callback(data, err);\r\n            });\r\n        } else if (lstQuery.action === enumValue.ENTITY_ACTION.INSERT_BATCH) {\r\n            db.execInsertBatch(lstQuery, (data, err) => {\r\n                callback(data, err);\r\n            });\r\n        } else {\r\n            db.exec(lstQuery, (data, err) => {\r\n                callback(data, err);\r\n            }, removeLog);\r\n        }\r\n    } catch (error) {\r\n        logger.error(error, enumValue.HEALTH_CHECK_TYPE.BUSINESS);\r\n    }\r\n};\r\nmodule.exports.exec = exec;\r\nconst processQueue = ({ query, cb }) => {\r\n    return new Promise(resolve => {\r\n        exec(query, (data, err) => {\r\n            cb(data, err);\r\n            return resolve();\r\n        });\r\n    });\r\n};\r\nconst execQueue = (queryInput, cb) => {\r\n    queue.push(processQueue, {\r\n        query: queryInput,\r\n        cb\r\n    });\r\n};\r\nmodule.exports.execQueue = execQueue;\r\nconst run = (store_name, params, callback) => {\r\n    try {\r\n        // store_name: ten store procedure\r\n        // params: list params\r\n        if (!is_db_processing) {\r\n            logger.info('not init db on run');\r\n            // chua init db thi init\r\n            if (!lstStorePending) {\r\n                lstStorePending = [];\r\n            }\r\n            const timeCurrent = dateTime.getTimeMiliSeconds();\r\n            lstStorePending[timeCurrent] = {\r\n                store: {\r\n                    name: store_name,\r\n                    params\r\n                },\r\n                cb: callback\r\n            };\r\n            if (!isProcessing) {\r\n                isProcessing = true;\r\n                db_init.initDatabase(function res(data) {\r\n                    is_db_processing = data;\r\n                    isProcessing = false;\r\n                });\r\n            }\r\n\r\n            return;\r\n        }\r\n        db.run(store_name, params, (data, err) => {\r\n            callback(data, err);\r\n        });\r\n    } catch (error) {\r\n        logger.error(error, enumValue.HEALTH_CHECK_TYPE.BUSINESS);\r\n    }\r\n};\r\nmodule.exports.run = run;\r\nmodule.exports.runAsync = (store_name, params) => {\r\n    return new Promise((resolve, reject) => {\r\n        run(store_name, params, (data, err) => {\r\n            if (err) {\r\n                return reject(err);\r\n            }\r\n            return resolve(data);\r\n        });\r\n    });\r\n};\r\n"]}