export CSV from mysql test

This commit is contained in:
Jan Prochazka
2020-06-04 11:18:46 +02:00
parent d05b319030
commit afbec02f3a
13 changed files with 185 additions and 2 deletions

View File

@@ -0,0 +1,10 @@
function copyStream(input, output) {
return new Promise((resolve, reject) => {
const finisher = output['finisher'] || output;
finisher.on('finish', resolve);
finisher.on('error', reject);
input.pipe(output);
});
}
module.exports = copyStream;

View File

@@ -0,0 +1,13 @@
const csv = require('csv');
const fs = require('fs');
async function csvWriter({ fileName, encoding = 'utf-8', ...options }) {
console.log(`Writing file ${fileName}`);
const csvStream = csv.stringify(options);
const fileStream = fs.createWriteStream(fileName, encoding);
csvStream.pipe(fileStream);
csvStream['finisher'] = fileStream;
return csvStream;
}
module.exports = csvWriter;

View File

@@ -0,0 +1,24 @@
const stream = require('stream');
async function fakeObjectReader({ delay = 0 } = {}) {
const pass = new stream.PassThrough({
objectMode: true,
});
function doWrite() {
pass.write({ id: 1, country: 'Czechia' });
pass.write({ id: 2, country: 'Austria' });
pass.write({ id: 3, country: 'Germany' });
pass.write({ id: 4, country: 'Romania' });
pass.end();
}
if (delay) {
setTimeout(doWrite, delay);
} else {
doWrite();
}
return pass;
}
module.exports = fakeObjectReader;

View File

@@ -0,0 +1,13 @@
const queryReader = require('./queryReader');
const csvWriter = require('./csvWriter');
const runScript = require('./runScript');
const copyStream = require('./copyStream');
const fakeObjectReader = require('./fakeObjectReader');
module.exports = {
queryReader,
csvWriter,
runScript,
copyStream,
fakeObjectReader,
};

View File

@@ -0,0 +1,14 @@
const driverConnect = require('../utility/driverConnect');
const engines = require('@dbgate/engines');
async function queryReader({ connection, sql }) {
console.log(`Reading query ${sql}`);
const driver = engines(connection);
const pool = await driverConnect(driver, connection);
console.log(`Connected.`);
return driver.readableStream(pool, sql);
}
module.exports = queryReader;

View File

@@ -0,0 +1,11 @@
async function runScript(func) {
try {
await func();
process.exit(0);
} catch (err) {
console.log(err);
process.exit(1);
}
}
module.exports = runScript;