import { Response } from 'express'; import { supabase } from '../lib/supabase'; import { AuthenticatedRequest } from '../middleware/auth'; export const createCase = async (req: AuthenticatedRequest, res: Response) => { try { const userId = req.user?.id; const title = String(req.body?.title || 'Yeni Sohbet').slice(0, 200); // requireAuth doğrudan kullanıcının kendi id'sini set ediyor; başkasının hesabına // dosya oluşturulamaz. Yazma frontend'in anon client'ı yerine burada (service_role // ile) yapılıyor, cases için de RLS engeli yaşanmasın diye. const { data, error } = await supabase .from('cases') .insert([{ title, user_id: userId }]) .select('id, title') .single(); if (error) throw error; res.json({ case: data }); } catch (error: any) { console.error('Create Case Error:', error); res.status(500).json({ error: error.message || 'Internal Server Error' }); } }; 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' }); } };