import fs from "fs"; import path from "path"; import _ from "lodash"; import type { BunMariaDBConfig } from "../types"; import { AppData } from "../data/app-data"; import grabDBDir from "./grab-db-dir"; import grabSortedExports from "./grab-sorted-exports"; type Params = { config: BunMariaDBConfig; }; export default function trimExports({ config }: Params) { const { export_dir } = grabDBDir({ config }); // Only consider archives written by `export` (`{db_name}-{timestamp}.tar.gz|zip`) const exportNamePattern = new RegExp( `^${_.escapeRegExp(config.db_name)}-\\d+\\.(tar\\.gz|zip)$`, ); const exports = grabSortedExports({ config }).filter( (name) => exportNamePattern.test(name) && fs.statSync(path.join(export_dir, name)).isFile(), ); const max_exports = config.max_exports || AppData["MaxExports"]; for (let i = 0; i < exports.length; i++) { const export_name = exports[i]; if (!export_name) continue; if (i > max_exports - 1) { fs.unlinkSync(path.join(export_dir, export_name)); } } }