dbgate-api 4.7.2 → 4.7.3-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dbgate-api",
3
3
  "main": "src/index.js",
4
- "version": "4.7.2",
4
+ "version": "4.7.3-alpha.2",
5
5
  "homepage": "https://dbgate.org/",
6
6
  "repository": {
7
7
  "type": "git",
@@ -25,9 +25,9 @@
25
25
  "compare-versions": "^3.6.0",
26
26
  "cors": "^2.8.5",
27
27
  "cross-env": "^6.0.3",
28
- "dbgate-query-splitter": "^4.7.2",
29
- "dbgate-sqltree": "^4.7.2",
30
- "dbgate-tools": "^4.7.2",
28
+ "dbgate-query-splitter": "^4.7.3-alpha.2",
29
+ "dbgate-sqltree": "^4.7.3-alpha.2",
30
+ "dbgate-tools": "^4.7.3-alpha.2",
31
31
  "diff": "^5.0.0",
32
32
  "diff2html": "^3.4.13",
33
33
  "eslint": "^6.8.0",
@@ -63,7 +63,7 @@
63
63
  "devDependencies": {
64
64
  "@types/fs-extra": "^9.0.11",
65
65
  "@types/lodash": "^4.14.149",
66
- "dbgate-types": "^4.7.2",
66
+ "dbgate-types": "^4.7.3-alpha.2",
67
67
  "env-cmd": "^10.1.0",
68
68
  "node-loader": "^1.0.2",
69
69
  "nodemon": "^2.0.2",
@@ -265,4 +265,16 @@ module.exports = {
265
265
 
266
266
  return true;
267
267
  },
268
+
269
+ createConfigFile_meta: true,
270
+ async createConfigFile({ appFolder, fileName, content }) {
271
+ const file = path.join(appdir(), appFolder, fileName);
272
+ if (!(await fs.exists(file))) {
273
+ await fs.writeFile(file, JSON.stringify(content, undefined, 2));
274
+ socket.emitChanged(`app-files-changed-${appFolder}`);
275
+ socket.emitChanged('used-apps-changed');
276
+ return true;
277
+ }
278
+ return false;
279
+ },
268
280
  };
@@ -98,6 +98,7 @@ module.exports = {
98
98
  const app = folder.substring('app:'.length);
99
99
  await fs.writeFile(path.join(appdir(), app, file), serialize(format, data));
100
100
  socket.emitChanged(`app-files-changed-${app}`);
101
+ socket.emitChanged('used-apps-changed');
101
102
  apps.emitChangedDbApp(folder);
102
103
  return true;
103
104
  } else {
@@ -141,8 +142,8 @@ module.exports = {
141
142
  },
142
143
 
143
144
  generateUploadsFile_meta: true,
144
- async generateUploadsFile() {
145
- const fileName = `${uuidv1()}.html`;
145
+ async generateUploadsFile({ extension }) {
146
+ const fileName = `${uuidv1()}.${extension || 'html'}`;
146
147
  return {
147
148
  fileName,
148
149
  filePath: path.join(uploadsdir(), fileName),
@@ -1,5 +1,5 @@
1
1
 
2
2
  module.exports = {
3
- version: '4.7.2',
4
- buildTime: '2022-03-07T17:31:11.445Z'
3
+ version: '4.7.3-alpha.2',
4
+ buildTime: '2022-03-13T15:52:44.332Z'
5
5
  };
@@ -1,18 +1,47 @@
1
1
  const EnsureStreamHeaderStream = require('../utility/EnsureStreamHeaderStream');
2
+ const Stream = require('stream');
3
+ const ColumnMapTransformStream = require('../utility/ColumnMapTransformStream');
4
+
5
+ function copyStream(input, output, options) {
6
+ const { columns } = options || {};
7
+
8
+ const transforms = [];
9
+ if (columns) {
10
+ transforms.push(new ColumnMapTransformStream(columns));
11
+ }
12
+ if (output.requireFixedStructure) {
13
+ transforms.push(new EnsureStreamHeaderStream());
14
+ }
15
+
16
+ // return new Promise((resolve, reject) => {
17
+ // Stream.pipeline(input, ...transforms, output, err => {
18
+ // if (err) {
19
+ // reject(err);
20
+ // } else {
21
+ // resolve();
22
+ // }
23
+ // });
24
+ // });
2
25
 
3
- function copyStream(input, output) {
4
26
  return new Promise((resolve, reject) => {
5
27
  const finisher = output['finisher'] || output;
6
28
  finisher.on('finish', resolve);
7
29
  finisher.on('error', reject);
8
30
 
9
- if (output.requireFixedStructure) {
10
- const ensureHeader = new EnsureStreamHeaderStream();
11
- input.pipe(ensureHeader);
12
- ensureHeader.pipe(output);
13
- } else {
14
- input.pipe(output);
31
+ let lastStream = input;
32
+ for (const tran of transforms) {
33
+ lastStream.pipe(tran);
34
+ lastStream = tran;
15
35
  }
36
+ lastStream.pipe(output);
37
+
38
+ // if (output.requireFixedStructure) {
39
+ // const ensureHeader = new EnsureStreamHeaderStream();
40
+ // input.pipe(ensureHeader);
41
+ // ensureHeader.pipe(output);
42
+ // } else {
43
+ // input.pipe(output);
44
+ // }
16
45
  });
17
46
  }
18
47
 
@@ -0,0 +1,21 @@
1
+ const stream = require('stream');
2
+ const { transformRowUsingColumnMap } = require('dbgate-tools');
3
+
4
+ class ColumnMapTransformStream extends stream.Transform {
5
+ constructor(columns) {
6
+ super({ objectMode: true });
7
+ this.columns = columns;
8
+ }
9
+ _transform(chunk, encoding, done) {
10
+ if (chunk.__isStreamHeader) {
11
+ // skip stream header
12
+ done();
13
+ return;
14
+ }
15
+
16
+ this.push(transformRowUsingColumnMap(chunk, this.columns));
17
+ done();
18
+ }
19
+ }
20
+
21
+ module.exports = ColumnMapTransformStream;
@@ -3,7 +3,7 @@ const fs = require('fs-extra');
3
3
  async function saveFreeTableData(file, data) {
4
4
  const { structure, rows } = data;
5
5
  const fileStream = fs.createWriteStream(file);
6
- await fileStream.write(JSON.stringify(structure) + '\n');
6
+ await fileStream.write(JSON.stringify({ __isStreamHeader: true, ...structure }) + '\n');
7
7
  for (const row of rows) {
8
8
  await fileStream.write(JSON.stringify(row) + '\n');
9
9
  }