JSON array export file format, quick exports JSON, JSONL

This commit is contained in:
Jan Prochazka
2021-06-06 13:45:24 +02:00
parent 26ff3f45f8
commit 40440e957a
4 changed files with 93 additions and 11 deletions

View File

@@ -45,14 +45,6 @@
return res;
}
function buildQuickExports(plugins) {
const res = [];
for (const { content } of plugins) {
if (content.quickExports) res.push(...content.quickExports);
}
return res;
}
export function buildExtensions(plugins) {
const extensions = {
plugins,
@@ -71,7 +63,7 @@
import { extensions, loadingPluginStore } from '../stores';
import axiosInstance from '../utility/axiosInstance';
import { useInstalledPlugins } from '../utility/metadataLoaders';
import { buildFileFormats } from './fileformats';
import { buildFileFormats, buildQuickExports } from './fileformats';
import { buildThemes } from './themes';
import dbgateTools from 'dbgate-tools';

View File

@@ -1,4 +1,4 @@
import { FileFormatDefinition } from 'dbgate-types';
import { FileFormatDefinition, QuickExportDefinition } from 'dbgate-types';
const jsonlFormat = {
storageType: 'jsonl',
@@ -8,8 +8,37 @@ const jsonlFormat = {
writerFunc: 'jsonLinesWriter',
};
const jsonFormat = {
storageType: 'json',
extension: 'json',
name: 'JSON',
writerFunc: 'jsonArrayWriter',
};
const jsonlQuickExport = {
label: 'JSON lines',
extension: 'jsonl',
createWriter: fileName => ({
functionName: 'jsonLinesWriter',
props: {
fileName,
},
}),
};
const jsonQuickExport = {
label: 'JSON',
extension: 'json',
createWriter: fileName => ({
functionName: 'jsonArrayWriter',
props: {
fileName,
},
}),
};
export function buildFileFormats(plugins): FileFormatDefinition[] {
const res = [jsonlFormat];
const res = [jsonlFormat, jsonFormat];
for (const { content } of plugins) {
const { fileFormats } = content;
if (fileFormats) res.push(...fileFormats);
@@ -17,6 +46,14 @@ export function buildFileFormats(plugins): FileFormatDefinition[] {
return res;
}
export function buildQuickExports(plugins): QuickExportDefinition[] {
const res = [jsonQuickExport, jsonlQuickExport];
for (const { content } of plugins) {
if (content.quickExports) res.push(...content.quickExports);
}
return res;
}
export function findFileFormat(extensions, storageType) {
return extensions.fileFormats.find(x => x.storageType == storageType);
}