mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-24 22:16:00 +00:00
JSON import
This commit is contained in:
@@ -17,7 +17,6 @@ const CSV_DATA = `Issue Number; Title; Github URL; Labels; State; Created At; Up
|
|||||||
`;
|
`;
|
||||||
|
|
||||||
test('csv import test', async () => {
|
test('csv import test', async () => {
|
||||||
expect(1).toEqual(1);
|
|
||||||
const dbgatePluginCsv = requirePlugin('dbgate-plugin-csv');
|
const dbgatePluginCsv = requirePlugin('dbgate-plugin-csv');
|
||||||
|
|
||||||
const csvFileName = tmp.tmpNameSync();
|
const csvFileName = tmp.tmpNameSync();
|
||||||
@@ -63,3 +62,36 @@ test('csv import test', async () => {
|
|||||||
Assignee: '',
|
Assignee: '',
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('JSON array import test', async () => {
|
||||||
|
const jsonFileName = tmp.tmpNameSync();
|
||||||
|
const jsonLinesFileName = tmp.tmpNameSync();
|
||||||
|
|
||||||
|
fs.writeFileSync(
|
||||||
|
jsonFileName,
|
||||||
|
JSON.stringify([
|
||||||
|
{ id: 1, val: 'v1' },
|
||||||
|
{ id: 2, val: 'v2' },
|
||||||
|
])
|
||||||
|
);
|
||||||
|
|
||||||
|
const reader = await dbgateApi.jsonReader({
|
||||||
|
fileName: jsonFileName,
|
||||||
|
});
|
||||||
|
|
||||||
|
const writer = await dbgateApi.jsonLinesWriter({
|
||||||
|
fileName: jsonLinesFileName,
|
||||||
|
});
|
||||||
|
await dbgateApi.copyStream(reader, writer);
|
||||||
|
|
||||||
|
const jsonData = fs.readFileSync(jsonLinesFileName, 'utf-8');
|
||||||
|
const rows = jsonData
|
||||||
|
.split('\n')
|
||||||
|
.filter(x => x.trim() !== '')
|
||||||
|
.map(x => JSON.parse(x));
|
||||||
|
expect(rows.length).toEqual(2);
|
||||||
|
expect(rows[0]).toEqual({
|
||||||
|
id: 1,
|
||||||
|
val: 'v1',
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ const modifyJsonLinesReader = require('./modifyJsonLinesReader');
|
|||||||
const dataDuplicator = require('./dataDuplicator');
|
const dataDuplicator = require('./dataDuplicator');
|
||||||
const dbModelToJson = require('./dbModelToJson');
|
const dbModelToJson = require('./dbModelToJson');
|
||||||
const jsonToDbModel = require('./jsonToDbModel');
|
const jsonToDbModel = require('./jsonToDbModel');
|
||||||
|
const jsonReader = require('./jsonReader');
|
||||||
|
|
||||||
const dbgateApi = {
|
const dbgateApi = {
|
||||||
queryReader,
|
queryReader,
|
||||||
@@ -61,6 +62,7 @@ const dbgateApi = {
|
|||||||
dataDuplicator,
|
dataDuplicator,
|
||||||
dbModelToJson,
|
dbModelToJson,
|
||||||
jsonToDbModel,
|
jsonToDbModel,
|
||||||
|
jsonReader,
|
||||||
};
|
};
|
||||||
|
|
||||||
requirePlugin.initializeDbgateApi(dbgateApi);
|
requirePlugin.initializeDbgateApi(dbgateApi);
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ class ParseStream extends stream.Transform {
|
|||||||
this.rowsWritten = 0;
|
this.rowsWritten = 0;
|
||||||
}
|
}
|
||||||
_transform(chunk, encoding, done) {
|
_transform(chunk, encoding, done) {
|
||||||
const obj = JSON.parse(chunk);
|
|
||||||
if (!this.wasHeader) {
|
if (!this.wasHeader) {
|
||||||
this.push({
|
this.push({
|
||||||
__isStreamHeader: true,
|
__isStreamHeader: true,
|
||||||
@@ -25,7 +24,7 @@ class ParseStream extends stream.Transform {
|
|||||||
this.wasHeader = true;
|
this.wasHeader = true;
|
||||||
}
|
}
|
||||||
if (!this.limitRows || this.rowsWritten < this.limitRows) {
|
if (!this.limitRows || this.rowsWritten < this.limitRows) {
|
||||||
this.push(obj.value);
|
this.push(chunk.value);
|
||||||
this.rowsWritten += 1;
|
this.rowsWritten += 1;
|
||||||
}
|
}
|
||||||
done();
|
done();
|
||||||
|
|||||||
Reference in New Issue
Block a user