Files
dbgate/plugins/dbgate-plugin-mssql/src/backend/createNativeBulkInsertStream.js
Jan Prochazka 4d5cc119f2 added plugins
2021-04-13 16:17:53 +02:00

35 lines
923 B
JavaScript

const { createBulkInsertStreamBase } = require('dbgate-tools');
function runBulkInsertBatch(pool, tableName, writable, rows) {
return new Promise((resolve, reject) => {
const tableMgr = pool.tableMgr();
tableMgr.bind(tableName, bulkMgr => {
bulkMgr.insertRows(rows, err => {
if (err) reject(err);
resolve();
});
});
});
}
/**
*
* @param {import('dbgate-types').EngineDriver} driver
*/
function createNativeBulkInsertStream(driver, stream, pool, name, options) {
const writable = createBulkInsertStreamBase(driver, stream, pool, name, options);
const fullName = name.schemaName ? `[${name.schemaName}].[${name.pureName}]` : name.pureName;
writable.send = async () => {
const rows = writable.buffer;
writable.buffer = [];
await runBulkInsertBatch(pool, fullName, writable, rows);
};
return writable;
}
module.exports = createNativeBulkInsertStream;