diff --git a/src/routes/files.ts b/src/routes/files.ts index 7cb1a7edc9..bda236c537 100644 --- a/src/routes/files.ts +++ b/src/routes/files.ts @@ -68,18 +68,6 @@ router.post( }) ); -/** @TODO This needs to support multipart form-data for file uploads */ -// router.post( -// '/', -// asyncHandler(async (req, res) => { -// const records = await FilesService.createFile( -// req.body, -// res.locals.query -// ); -// return res.json({ data: records }); -// }) -// ); - router.get( '/', sanitizeQuery, diff --git a/src/services/files.ts b/src/services/files.ts index 9070f81b9b..368ad19814 100644 --- a/src/services/files.ts +++ b/src/services/files.ts @@ -2,6 +2,8 @@ import { Query } from '../types/query'; import * as ItemsService from './items'; import storage from '../storage'; import * as PayloadService from './payload'; +import database from '../database'; +import logger from '../logger'; export const createFile = async ( stream: NodeJS.ReadableStream, @@ -29,5 +31,12 @@ export const updateFile = async (pk: string | number, data: Record, }; export const deleteFile = async (pk: string | number) => { - await ItemsService.deleteItem('directus_files', pk); + const file = await database + .select('storage', 'filename_disk') + .from('directus_files') + .where({ id: pk }) + .first(); + const { wasDeleted } = await storage.disk(file.storage).delete(file.filename_disk); + logger.info(`File ${file.filename_download} deleted: ${wasDeleted}`); + await database.delete().from('directus_files').where({ id: pk }); };