import fs from "fs"; import path from "path"; import _ from "lodash"; import { DSQL_DATASQUIREL_BACKUPS, DsqlTables } from "../../../../types/dsql"; import { APIResponseObject } from "../../../../types"; import grabDirNames from "../../../../utils/backend/names/grab-dir-names"; import deleteDbEntry from "../../db/deleteDbEntry"; import numberfy from "../../../../utils/numberfy"; type Params = { backup: DSQL_DATASQUIREL_BACKUPS; }; export default async function deleteBackup({ backup, }: Params): Promise { try { const { mainBackupDir, userBackupDir } = grabDirNames({ userId: backup.user_id, }); if (backup.user_id && !userBackupDir) { return { success: false, msg: `Error grabbing user backup directory`, }; } if (!backup.uuid) { return { success: false, msg: `No UUID found for backup`, }; } const newBackupDir = path.join( backup.user_id && userBackupDir ? userBackupDir : mainBackupDir, backup.uuid ); fs.rmSync(newBackupDir, { recursive: true, force: true }); await deleteDbEntry< DSQL_DATASQUIREL_BACKUPS, (typeof DsqlTables)[number] >({ identifierColumnName: "id", identifierValue: numberfy(backup.id), tableName: "backups", }); return { success: true }; } catch (error: any) { return { success: false, msg: `Failed to write backup files`, error: error.message, }; } }