diff --git a/packages/api/src/shell/index.js b/packages/api/src/shell/index.js index 82513088d..1a2bef628 100644 --- a/packages/api/src/shell/index.js +++ b/packages/api/src/shell/index.js @@ -6,7 +6,7 @@ const copyStream = require('./copyStream'); const fakeObjectReader = require('./fakeObjectReader'); const consoleObjectWriter = require('./consoleObjectWriter'); const jsonLinesWriter = require('./jsonLinesWriter'); -const jsonArrayWriter = require('./jsonArrayWriter'); +const jsonWriter = require('./jsonWriter'); const jsonLinesReader = require('./jsonLinesReader'); const sqlDataWriter = require('./sqlDataWriter'); const jslDataReader = require('./jslDataReader'); @@ -38,8 +38,9 @@ const dbgateApi = { tableReader, copyStream, jsonLinesWriter, - jsonArrayWriter, jsonLinesReader, + jsonReader, + jsonWriter, sqlDataWriter, fakeObjectReader, consoleObjectWriter, @@ -62,7 +63,6 @@ const dbgateApi = { dataDuplicator, dbModelToJson, jsonToDbModel, - jsonReader, }; requirePlugin.initializeDbgateApi(dbgateApi); diff --git a/packages/api/src/shell/jsonArrayWriter.js b/packages/api/src/shell/jsonWriter.js similarity index 91% rename from packages/api/src/shell/jsonArrayWriter.js rename to packages/api/src/shell/jsonWriter.js index ed18b86f6..d80f343be 100644 --- a/packages/api/src/shell/jsonArrayWriter.js +++ b/packages/api/src/shell/jsonWriter.js @@ -40,7 +40,7 @@ class StringifyStream extends stream.Transform { } } -async function jsonArrayWriter({ fileName, encoding = 'utf-8' }) { +async function jsonWriter({ fileName, encoding = 'utf-8' }) { logger.info(`Writing file ${fileName}`); const stringify = new StringifyStream(); const fileStream = fs.createWriteStream(fileName, encoding); @@ -49,4 +49,4 @@ async function jsonArrayWriter({ fileName, encoding = 'utf-8' }) { return stringify; } -module.exports = jsonArrayWriter; +module.exports = jsonWriter; diff --git a/packages/web/src/plugins/fileformats.ts b/packages/web/src/plugins/fileformats.ts index 700bba3ba..34b26ae6e 100644 --- a/packages/web/src/plugins/fileformats.ts +++ b/packages/web/src/plugins/fileformats.ts @@ -14,7 +14,32 @@ const jsonFormat = { extension: 'json', name: 'JSON', readerFunc: 'jsonReader', - writerFunc: 'jsonArrayWriter', + writerFunc: 'jsonWriter', + + args: [ + { + type: 'select', + name: 'jsonStyle', + label: 'JSON style', + options: [ + { name: 'Array', value: 'array' }, + { name: 'Object', value: 'object' }, + ], + apiName: 'jsonStyle', + }, + { + type: 'textbox', + name: 'keyField', + label: 'Key field', + apiName: 'keyField', + }, + { + type: 'textbox', + name: 'rootField', + label: 'Root field', + apiName: 'rootField', + }, + ], }; const sqlFormat = { @@ -39,7 +64,7 @@ const jsonQuickExport = { label: 'JSON', extension: 'json', createWriter: fileName => ({ - functionName: 'jsonArrayWriter', + functionName: 'jsonWriter', props: { fileName, },