rework delete function
This commit is contained in:
parent
52b1aeea98
commit
f83c5aa423
2 changed files with 35 additions and 30 deletions
|
@ -13,7 +13,7 @@ ffmpeg.setFfprobePath(ffprobepath.path);
|
|||
import fs from "fs";
|
||||
|
||||
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 {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}`);
|
||||
});
|
||||
|
||||
router.post("/:id(\\d+)/delete", [checkAuth], (req: Request, res: Response, next: NextFunction) => {
|
||||
db.all("SELECT path FROM media WHERE id = ?", [ req.params.id ], (err: Error, path: Array<any>) => {
|
||||
if (err) { return next(err); }
|
||||
fs.unlink(`uploads/${path[0].path}`, (err => {
|
||||
if (err) {
|
||||
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); }
|
||||
router.post("/:id(\\d+)/delete", [checkAuth], async (req: Request, res: Response, next: NextFunction) => {
|
||||
const path: any = await getPath(req.params.id)
|
||||
fs.unlink(`uploads/${path.path}`, async (err) => {
|
||||
if (err && err.errno == -4058) {
|
||||
await deleteId("media", req.params.id).then(()=> {
|
||||
return res.redirect("/");
|
||||
});
|
||||
})
|
||||
} else {
|
||||
console.log(err);
|
||||
await deleteId("media", req.params.id).then(()=> {
|
||||
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;
|
|
@ -1,6 +1,7 @@
|
|||
import sqlite3 from "sqlite3";
|
||||
import mkdirp from "mkdirp";
|
||||
import crypto from "crypto";
|
||||
import { FileFilterCallback } from "multer";
|
||||
|
||||
mkdirp.sync("./uploads");
|
||||
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 {
|
||||
id? : Number,
|
||||
path: String,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue