mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-20 18:16:00 +00:00
report wwritten rows
This commit is contained in:
45
packages/tools/src/rowProgressReporter.ts
Normal file
45
packages/tools/src/rowProgressReporter.ts
Normal file
@@ -0,0 +1,45 @@
|
||||
export class RowProgressReporter {
|
||||
counter = 0;
|
||||
timeoutHandle = null;
|
||||
|
||||
constructor(public progressName, public field = 'writtenRowCount') {}
|
||||
|
||||
add(count: number) {
|
||||
this.counter += count;
|
||||
if (!this.progressName) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.timeoutHandle) {
|
||||
return;
|
||||
}
|
||||
this.timeoutHandle = setTimeout(() => {
|
||||
this.timeoutHandle = null;
|
||||
this.send();
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
finish() {
|
||||
if (!this.progressName) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.timeoutHandle) {
|
||||
clearTimeout(this.timeoutHandle);
|
||||
this.timeoutHandle = null;
|
||||
}
|
||||
this.send();
|
||||
}
|
||||
|
||||
send() {
|
||||
if (!this.progressName) {
|
||||
return;
|
||||
}
|
||||
|
||||
process.send({
|
||||
msgtype: 'progress',
|
||||
progressName: this.progressName,
|
||||
[this.field]: this.counter,
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user