codimd/lib/realtime/realtimeSaveRevisionJob.ts
Raccoon b38915da20
ts: lib/realtime/realtimeSaveRevisionJob.js
Signed-off-by: Raccoon <raccoon@hackmd.io>
2021-06-16 18:35:23 +08:00

48 lines
974 B
TypeScript

'use strict'
import * as models from "../models";
import * as logger from "../logger";
/**
* clean when user not in any rooms or user not in connected list
*/
export class SaveRevisionJob {
private realtime: any;
private saverSleep: boolean;
private timer: NodeJS.Timeout;
constructor(realtime) {
this.realtime = realtime
this.saverSleep = false
}
start() {
if (this.timer) return
this.timer = setInterval(this.saveRevision.bind(this), 5 * 60 * 1000)
}
stop() {
if (!this.timer) return
clearInterval(this.timer)
this.timer = undefined
}
saveRevision() {
if (this.getSaverSleep()) return
models.Revision.saveAllNotesRevision((err, notes) => {
if (err) return logger.error('revision saver failed: ' + err)
if (notes && notes.length <= 0) {
this.setSaverSleep(true)
}
})
}
getSaverSleep() {
return this.saverSleep
}
setSaverSleep(val) {
this.saverSleep = val
}
}