server-ts: Port backup service

This commit is contained in:
Elian Doran
2024-02-17 19:33:29 +02:00
parent 6b8ee084e6
commit 8936a3fa3b
8 changed files with 23 additions and 21 deletions

View File

@@ -20,7 +20,7 @@ const specialNotesService = require('./special_notes.js');
const branchService = require('./branches.js');
const exportService = require('./export/zip.js');
const syncMutex = require('./sync_mutex');
const backupService = require('./backup.js');
const backupService = require('./backup');
const optionsService = require('./options');

View File

@@ -1,14 +1,16 @@
"use strict";
const dateUtils = require('./date_utils');
const optionService = require('./options');
const fs = require('fs-extra');
const dataDir = require('./data_dir');
const log = require('./log');
const syncMutexService = require('./sync_mutex');
const cls = require('./cls');
const sql = require('./sql');
const path = require('path');
import dateUtils = require('./date_utils');
import optionService = require('./options');
import fs = require('fs-extra');
import dataDir = require('./data_dir');
import log = require('./log');
import syncMutexService = require('./sync_mutex');
import cls = require('./cls');
import sql = require('./sql');
import path = require('path');
type BackupType = ("daily" | "weekly" | "monthly");
function getExistingBackups() {
if (!fs.existsSync(dataDir.BACKUP_DIR)) {
@@ -35,13 +37,13 @@ function regularBackup() {
});
}
function isBackupEnabled(backupType) {
function isBackupEnabled(backupType: BackupType) {
const optionName = `${backupType}BackupEnabled`;
return optionService.getOptionBool(optionName);
}
function periodBackup(optionName, backupType, periodInSeconds) {
function periodBackup(optionName: string, backupType: BackupType, periodInSeconds: number) {
if (!isBackupEnabled(backupType)) {
return;
}
@@ -56,7 +58,7 @@ function periodBackup(optionName, backupType, periodInSeconds) {
}
}
async function backupNow(name) {
async function backupNow(name: string) {
// we don't want to back up DB in the middle of sync with potentially inconsistent DB state
return await syncMutexService.doExclusively(async () => {
const backupFile = `${dataDir.BACKUP_DIR}/backup-${name}.db`;
@@ -73,7 +75,7 @@ if (!fs.existsSync(dataDir.BACKUP_DIR)) {
fs.mkdirSync(dataDir.BACKUP_DIR, 0o700);
}
module.exports = {
export = {
getExistingBackups,
backupNow,
regularBackup

View File

@@ -1,4 +1,4 @@
const backupService = require('./backup.js');
const backupService = require('./backup');
const sql = require('./sql');
const fs = require('fs-extra');
const log = require('./log');

View File

@@ -166,10 +166,10 @@ dbReady.then(() => {
return;
}
setInterval(() => require('./backup.js').regularBackup(), 4 * 60 * 60 * 1000);
setInterval(() => require('./backup').regularBackup(), 4 * 60 * 60 * 1000);
// kickoff first backup soon after start up
setTimeout(() => require('./backup.js').regularBackup(), 5 * 60 * 1000);
setTimeout(() => require('./backup').regularBackup(), 5 * 60 * 1000);
// optimize is usually inexpensive no-op, so running it semi-frequently is not a big deal
setTimeout(() => optimize(), 60 * 60 * 1000);