mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-19 16:36:00 +00:00
stream header flag + export from mongo
This commit is contained in:
35
packages/api/src/utility/EnsureStreamHeaderStream.js
Normal file
35
packages/api/src/utility/EnsureStreamHeaderStream.js
Normal file
@@ -0,0 +1,35 @@
|
||||
const stream = require('stream');
|
||||
|
||||
class EnsureStreamHeaderStream extends stream.Transform {
|
||||
constructor() {
|
||||
super({ objectMode: true });
|
||||
this.wasHeader = false;
|
||||
}
|
||||
_transform(chunk, encoding, done) {
|
||||
if (!this.wasHeader) {
|
||||
if (chunk.__isDynamicStructure) {
|
||||
// ignore dynamic structure header
|
||||
done();
|
||||
return;
|
||||
}
|
||||
|
||||
if (
|
||||
!chunk.__isStreamHeader &&
|
||||
// TODO remove isArray test
|
||||
!Array.isArray(chunk.columns)
|
||||
) {
|
||||
this.push({
|
||||
__isStreamHeader: true,
|
||||
__isComputedStructure: true,
|
||||
columns: Object.keys(chunk).map(columnName => ({ columnName })),
|
||||
});
|
||||
}
|
||||
|
||||
this.wasHeader = true;
|
||||
}
|
||||
this.push(chunk);
|
||||
done();
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = EnsureStreamHeaderStream;
|
||||
Reference in New Issue
Block a user