import grabDBDir from "../utils/grab-db-dir"; import fs from "fs"; import grabSortedBackups from "./grab-sorted-backups"; import { AppData } from "../data/app-data"; import path from "path"; import _ from "lodash"; export default function trimBackups({ config }) { const { backup_dir } = grabDBDir({ config }); // Only consider files written by `backup` (`{db_name}-{timestamp}.sql`) const backupNamePattern = new RegExp(`^${_.escapeRegExp(config.db_name)}-\\d+\\.sql$`); const backups = grabSortedBackups({ config }).filter((name) => backupNamePattern.test(name) && fs.statSync(path.join(backup_dir, name)).isFile()); const max_backups = config.max_backups || AppData["MaxBackups"]; for (let i = 0; i < backups.length; i++) { const backup_name = backups[i]; if (!backup_name) continue; if (i > max_backups - 1) { const backup_file_to_unlink = path.join(backup_dir, backup_name); fs.unlinkSync(backup_file_to_unlink); } } }