Add button and API endpoint to delete job

Signed-off-by: Param Siddharth <contact@paramsid.com>
This commit is contained in:
Param Siddharth 2025-10-20 15:53:20 +05:30
parent 061e63e705
commit a033138e58
No known key found for this signature in database
GPG key ID: 5BF26004D1BC6BBC
4 changed files with 69 additions and 0 deletions

40
src/pages/deleteJob.tsx Normal file
View file

@ -0,0 +1,40 @@
import { rmSync } from "node:fs";
import { Elysia } from "elysia";
import { outputDir, uploadsDir } from "..";
import db from "../db/db";
import { WEBROOT } from "../helpers/env";
import { userService } from "./user";
import { Jobs } from "../db/types";
export const deleteJob = new Elysia()
.use(userService)
.get(
"/delete/:userId/:jobId",
async ({ params, redirect, user }) => {
const job = db
.query("SELECT * FROM jobs WHERE user_id = ? AND id = ?")
.as(Jobs)
.get(user.id, params.jobId);
if (!job) {
return redirect(`${WEBROOT}/results`, 302);
}
// delete the directories
rmSync(`${outputDir}${job.user_id}/${job.id}`, {
recursive: true,
force: true,
});
rmSync(`${uploadsDir}${job.user_id}/${job.id}`, {
recursive: true,
force: true,
});
// delete the job
db.query("DELETE FROM jobs WHERE id = ?").run(job.id);
return redirect(`${WEBROOT}/history`, 302);
},
{
auth: true,
},
);