rework delete function

This commit is contained in:
waveringana 2022-12-09 22:02:32 +00:00
parent 52b1aeea98
commit f83c5aa423
2 changed files with 35 additions and 30 deletions

View file

@ -13,7 +13,7 @@ ffmpeg.setFfprobePath(ffprobepath.path);
import fs from "fs"; import fs from "fs";
import {extension} from "../types/lib"; import {extension} from "../types/lib";
import {db, MediaRow} from "../types/db"; import {db, MediaRow, getPath, deleteId} from "../types/db";
import {fileStorage, fileFilter} from "../types/multer"; import {fileStorage, fileFilter} from "../types/multer";
import {checkAuth, checkSharexAuth, createEmbedData, handleUpload} from "./middleware"; import {checkAuth, checkSharexAuth, createEmbedData, handleUpload} from "./middleware";
@ -80,35 +80,19 @@ router.post("/sharex", [checkSharexAuth, upload.single("fileupload"), createEmbe
return res.send(`${req.protocol}://${req.get("host")}/uploads/${req.file.filename}`); return res.send(`${req.protocol}://${req.get("host")}/uploads/${req.file.filename}`);
}); });
router.post("/:id(\\d+)/delete", [checkAuth], (req: Request, res: Response, next: NextFunction) => { router.post("/:id(\\d+)/delete", [checkAuth], async (req: Request, res: Response, next: NextFunction) => {
db.all("SELECT path FROM media WHERE id = ?", [ req.params.id ], (err: Error, path: Array<any>) => { const path: any = await getPath(req.params.id)
if (err) { return next(err); } fs.unlink(`uploads/${path.path}`, async (err) => {
fs.unlink(`uploads/${path[0].path}`, (err => { if (err && err.errno == -4058) {
if (err) { await deleteId("media", req.params.id).then(()=> {
console.log(err);
if (err.errno == -4058) { //File just doesnt exist anymore
db.run("DELETE FROM media WHERE id = ?", [
req.params.id
], (err: Error) => {
if (err) { return next(err); }
return res.redirect("/"); return res.redirect("/");
}); })
} else { } else {
console.log(err); await deleteId("media", req.params.id).then(()=> {
return res.redirect("/"); return res.redirect("/");
})
} }
} else { })
console.log(`Deleted ${path}`);
//Callback Hell :D
db.run("DELETE FROM media WHERE id = ?", [
req.params.id
], (err: Error) => {
if (err) { return next(err); }
return res.redirect("/");
});
}
}));
});
}); });
export default router; export default router;

View file

@ -1,6 +1,7 @@
import sqlite3 from "sqlite3"; import sqlite3 from "sqlite3";
import mkdirp from "mkdirp"; import mkdirp from "mkdirp";
import crypto from "crypto"; import crypto from "crypto";
import { FileFilterCallback } from "multer";
mkdirp.sync("./uploads"); mkdirp.sync("./uploads");
mkdirp.sync("./var/db"); mkdirp.sync("./var/db");
@ -16,6 +17,26 @@ export function createUser(username: string, password: string) {
]); ]);
} }
export function getPath(id: number | string) {
return new Promise((resolve, reject) => {
let query: string = `SELECT path FROM media WHERE id = ?`;
db.get(query, [id], (err: Error, path: object) => {
if (err) {reject(err)}
resolve(path)
});
})
}
export function deleteId(database: string, id: number | string) {
return new Promise((resolve, reject) => {
let query: string = `DELETE FROM ${database} WHERE id = ?`
db.run(query, [id], (err: Error) => {
if (err) {reject(err); return;}
resolve(null)
})
})
}
export interface MediaRow { export interface MediaRow {
id? : Number, id? : Number,
path: String, path: String,