mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-19 15:25:59 +00:00
export CSV from mysql test
This commit is contained in:
10
packages/api/src/shell/copyStream.js
Normal file
10
packages/api/src/shell/copyStream.js
Normal 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;
|
||||
13
packages/api/src/shell/csvWriter.js
Normal file
13
packages/api/src/shell/csvWriter.js
Normal 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;
|
||||
24
packages/api/src/shell/fakeObjectReader.js
Normal file
24
packages/api/src/shell/fakeObjectReader.js
Normal 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;
|
||||
13
packages/api/src/shell/index.js
Normal file
13
packages/api/src/shell/index.js
Normal 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,
|
||||
};
|
||||
14
packages/api/src/shell/queryReader.js
Normal file
14
packages/api/src/shell/queryReader.js
Normal 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;
|
||||
11
packages/api/src/shell/runScript.js
Normal file
11
packages/api/src/shell/runScript.js
Normal 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;
|
||||
Reference in New Issue
Block a user