summaryrefslogtreecommitdiffstats
path: root/server/jobs/incremental-vacuum.js
blob: f0fa78a17c94508124e8459726b5856b2fd232bf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
const { R } = require("redbean-node");
const { log } = require("../../src/util");
const Database = require("../database");

/**
 * Run incremental_vacuum and checkpoint the WAL.
 * @returns {Promise<void>} A promise that resolves when the process is finished.
 */

const incrementalVacuum = async () => {
    try {
        if (Database.dbConfig.type !== "sqlite") {
            log.debug("incrementalVacuum", "Skipping incremental_vacuum, not using SQLite.");
            return;
        }

        log.debug("incrementalVacuum", "Running incremental_vacuum and wal_checkpoint(PASSIVE)...");
        await R.exec("PRAGMA incremental_vacuum(200)");
        await R.exec("PRAGMA wal_checkpoint(PASSIVE)");
    } catch (e) {
        log.error("incrementalVacuum", `Failed: ${e.message}`);
    }
};

module.exports = {
    incrementalVacuum,
};