diff --git a/src/controllers/case.controller.ts b/src/controllers/case.controller.ts new file mode 100644 index 0000000..5db9516 --- /dev/null +++ b/src/controllers/case.controller.ts @@ -0,0 +1,21 @@ +import { Response } from 'express'; +import { supabase } from '../lib/supabase'; +import { AuthenticatedRequest } from '../middleware/auth'; + +export const deleteCase = async (req: AuthenticatedRequest, res: Response) => { + try { + const { caseId } = req.params; + if (!caseId) { + return res.status(400).json({ error: 'Geçersiz caseId' }); + } + // requireAuth zaten bu caseId'nin isteği yapan kullanıcıya ait olduğunu doğruladı. + // documents/analyses/chat_messages tabloları case_id üzerinden ON DELETE CASCADE + // ile tanımlı (bkz. sql/1.sql), yani cases satırını silmek hepsini birlikte siliyor. + const { error } = await supabase.from('cases').delete().eq('id', caseId); + if (error) throw error; + res.json({ ok: true }); + } catch (error: any) { + console.error('Delete Case Error:', error); + res.status(500).json({ error: error.message || 'Internal Server Error' }); + } +}; diff --git a/src/routes/case.routes.ts b/src/routes/case.routes.ts new file mode 100644 index 0000000..d70b812 --- /dev/null +++ b/src/routes/case.routes.ts @@ -0,0 +1,9 @@ +import { Router } from 'express'; +import { requireAuth } from '../middleware/auth'; +import { deleteCase } from '../controllers/case.controller'; + +const router = Router(); + +router.delete('/:caseId', requireAuth, deleteCase); + +export default router; diff --git a/src/routes/index.ts b/src/routes/index.ts index f231cb9..9945108 100644 --- a/src/routes/index.ts +++ b/src/routes/index.ts @@ -2,6 +2,7 @@ import { Router } from 'express'; import documentRoutes from './document.routes'; import chatRoutes from './chat.routes'; import precedentRoutes from './precedent.routes'; +import caseRoutes from './case.routes'; const router = Router(); @@ -11,6 +12,7 @@ router.get('/health', (req, res) => { router.use('/documents', documentRoutes); router.use('/chat', chatRoutes); +router.use('/cases', caseRoutes); router.use('/', precedentRoutes); // Keeps the same paths like /api/search-precedents export default router;