- Add bun test suite: SQL generator and value unit tests, plus MariaDB integration tests gated on BUN_MARIADB_TEST_DB - schema: add --dry-run and require confirmation (or --yes) before dropping tables/columns; block unapproved destructive statements - Always AND targetId with the query, regardless of searchOperator - Initialize lazily on first call; init throws instead of exiting - Generate IN (?, ?, ...) lists for IN / NOT IN - Share value binding between insert and update (booleans, embeddings, function values, "" -> NULL for non-text columns) - Keep Buffers and convert BigInt/Date without a JSON round-trip - DbSQL: report success for empty SELECT results - Run update() in a transaction with row locking - Key the client cache on the full connection config - Consolidate identifier quoting, drop dead code, merge column lookup - Read CLI version from package.json, pin @types/bun, chmod CLI on compile - Rebuild dist Co-Authored-By: Claude Opus 5.5 <[email protected]>
24 lines
1.0 KiB
JavaScript
24 lines
1.0 KiB
JavaScript
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);
|
|
}
|
|
}
|
|
}
|