datasquirel/package-shared/functions/backend/backups/su/delete-backup.ts
Benjamin Toby 382da38bb0 Updates
2025-07-09 20:42:01 +01:00

61 lines
1.7 KiB
TypeScript

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<APIResponseObject> {
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,
};
}
}