@npio/internals
Version:
A free visual website editor, powered with your own SolidJS components.
43 lines (35 loc) • 946 B
text/typescript
import { NitroMedia } from "@prisma/client";
import { useFilesystemDriver } from "../filesystem";
import { useDatabase } from "../prisma";
import { joinMediaUrl, mediaImagePath } from "./util";
export const deleteMedia = async function (id: string) {
const prisma = useDatabase();
const media = await prisma.nitroMedia.findUniqueOrThrow({
where: {
id,
},
});
const fs = useFilesystemDriver(media.driver);
await flushMediaCache(media);
try {
// Delete raw media file
await fs.delete({
name: joinMediaUrl(media.file),
});
} catch (err) {}
return await prisma.nitroMedia.delete({
where: {
id,
},
});
}; // Delete optimized images
export const flushMediaCache = async function (media: NitroMedia) {
const fs = useFilesystemDriver(media.driver);
try {
await fs.deleteDir({
name: mediaImagePath(media.publicId),
});
} catch (err) {
console.log(err);
}
};