better usage of __isStreamHeader flag

This commit is contained in:
Jan Prochazka
2022-02-17 13:23:56 +01:00
parent 29fa8445e2
commit 2946d8a1de
8 changed files with 22 additions and 36 deletions

View File

@@ -2,12 +2,17 @@ const EnsureStreamHeaderStream = require('../utility/EnsureStreamHeaderStream');
function copyStream(input, output) {
return new Promise((resolve, reject) => {
const ensureHeader = new EnsureStreamHeaderStream();
const finisher = output['finisher'] || output;
finisher.on('finish', resolve);
finisher.on('error', reject);
input.pipe(ensureHeader);
ensureHeader.pipe(output);
if (output.requireFixedStructure) {
const ensureHeader = new EnsureStreamHeaderStream();
input.pipe(ensureHeader);
ensureHeader.pipe(output);
} else {
input.pipe(output);
}
});
}

View File

@@ -11,10 +11,7 @@ class StringifyStream extends stream.Transform {
let skip = false;
if (!this.wasHeader) {
skip =
chunk.__isStreamHeader ||
// TODO remove isArray test
Array.isArray(chunk.columns);
skip = chunk.__isStreamHeader;
this.wasHeader = true;
}
if (!skip) {

View File

@@ -12,14 +12,14 @@ class ParseStream extends stream.Transform {
_transform(chunk, encoding, done) {
const obj = JSON.parse(chunk);
if (!this.wasHeader) {
if (
!obj.__isStreamHeader &&
// TODO remove isArray test
!Array.isArray(obj.columns)
) {
this.push({ columns: Object.keys(obj).map(columnName => ({ columnName })) });
if (!obj.__isStreamHeader) {
this.push({
__isStreamHeader: true,
__isDynamicStructure: true,
// columns: Object.keys(obj).map(columnName => ({ columnName })),
});
}
this.wasHeader = true;
}
if (!this.limitRows || this.rowsWritten < this.limitRows) {

View File

@@ -10,11 +10,7 @@ class StringifyStream extends stream.Transform {
_transform(chunk, encoding, done) {
let skip = false;
if (!this.wasHeader) {
skip =
(chunk.__isStreamHeader ||
// TODO remove isArray test
Array.isArray(chunk.columns)) &&
!this.header;
skip = (chunk.__isStreamHeader && !this.header) || (chunk.__isStreamHeader && chunk.__isDynamicStructure);
this.wasHeader = true;
}
if (!skip) {

View File

@@ -14,11 +14,7 @@ class SqlizeStream extends stream.Transform {
_transform(chunk, encoding, done) {
let skip = false;
if (!this.wasHeader) {
if (
chunk.__isStreamHeader ||
// TODO remove isArray test
Array.isArray(chunk.columns)
) {
if (chunk.__isStreamHeader) {
skip = true;
this.tableName = chunk.pureName;
if (chunk.engine) {

View File

@@ -13,11 +13,7 @@ class EnsureStreamHeaderStream extends stream.Transform {
return;
}
if (
!chunk.__isStreamHeader &&
// TODO remove isArray test
!Array.isArray(chunk.columns)
) {
if (!chunk.__isStreamHeader) {
this.push({
__isStreamHeader: true,
__isComputedStructure: true,