61 lines
1.7 KiB
TypeScript
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,
|
|
};
|
|
}
|
|
}
|