import { mkdirSync } from 'fs'; import { rimraf } from 'rimraf'; import { filesDirectory } from '../SocketData'; import { DashUploadUtils } from '../DashUploadUtils'; import { Method } from '../RouteManager'; import RouteSubscriber from '../RouteSubscriber'; import { Database } from '../database'; import { WebSocket } from '../websocket'; import ApiManager, { Registration } from './ApiManager'; export default class DeleteManager extends ApiManager { protected initialize(register: Registration): void { register({ method: Method.GET, requireAdminInRelease: true, subscription: new RouteSubscriber('delete').add('target?'), secureHandler: async ({ req, res }) => { const { target } = req.params; if (!target) { await WebSocket.doDelete(); } else { let all = false; switch (target) { case 'all': all = true; // eslint-disable-next-line no-fallthrough case 'database': await WebSocket.doDelete(false); if (!all) break; // eslint-disable-next-line no-fallthrough case 'files': rimraf.sync(filesDirectory); mkdirSync(filesDirectory); await DashUploadUtils.buildFileDirectories(); break; default: await Database.Instance.dropSchema(target); } } res.redirect('/home'); }, }); } }