This commit is contained in:
Jan Prochazka
2020-09-24 10:44:20 +02:00
parent c00ccd61bb
commit 61e881d4d9

View File

@@ -44,7 +44,8 @@ module.exports = {
return; return;
} }
reader.nextLine((err, line) => { reader.nextLine((err, line) => {
this.openedReaders[jslid].readedCount += 1; if (this.openedReaders[jslid].readedSchemaRow) this.openedReaders[jslid].readedDataRowCount += 1;
else this.openedReaders[jslid].readedSchemaRow = true;
if (err) reject(err); if (err) reject(err);
resolve(line); resolve(line);
}); });
@@ -53,10 +54,10 @@ module.exports = {
openReader(jslid) { openReader(jslid) {
// console.log('OPENING READER'); // console.log('OPENING READER');
console.log( // console.log(
'OPENING READER, LINES=', // 'OPENING READER, LINES=',
fs.readFileSync(path.join(jsldir(), `${jslid}.jsonl`), 'utf-8').split('\n').length // fs.readFileSync(path.join(jsldir(), `${jslid}.jsonl`), 'utf-8').split('\n').length
); // );
const file = path.join(jsldir(), `${jslid}.jsonl`); const file = path.join(jsldir(), `${jslid}.jsonl`);
return new Promise((resolve, reject) => return new Promise((resolve, reject) =>
lineReader.open(file, (err, reader) => { lineReader.open(file, (err, reader) => {
@@ -64,21 +65,24 @@ module.exports = {
resolve(); resolve();
this.openedReaders[jslid] = { this.openedReaders[jslid] = {
reader, reader,
readedCount: 0, readedDataRowCount: 0,
readedSchemaRow: false,
}; };
}) })
); );
}, },
async ensureReader(jslid, offset) { async ensureReader(jslid, offset) {
if (this.openedReaders[jslid] && this.openedReaders[jslid].readedCount > offset) { if (this.openedReaders[jslid] && this.openedReaders[jslid].readedDataRowCount > offset) {
await this.closeReader(jslid); await this.closeReader(jslid);
} }
if (!this.openedReaders[jslid]) { if (!this.openedReaders[jslid]) {
await this.openReader(jslid); await this.openReader(jslid);
} }
if (!this.openedReaders[jslid].readedSchemaRow) {
await this.readLine(jslid); // skip structure await this.readLine(jslid); // skip structure
while (this.openedReaders[jslid].readedCount < offset) { }
while (this.openedReaders[jslid].readedDataRowCount < offset) {
await this.readLine(jslid); await this.readLine(jslid);
} }
}, },