feat: add template upload/download/delete endpoints

Belge Şablonları now stores real files: POST /api/templates/upload
(multer -> Supabase Storage under templates/<user>/, then a templates
row), GET /api/templates/:id/download-url (short-lived signed URL),
and DELETE /api/templates/:id. Mounted at /api/templates.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
mstfyldz
2026-08-09 19:50:46 +03:00
co-authored by Claude Sonnet 5
parent 99d4d770d5
commit af5a03db92
3 changed files with 118 additions and 0 deletions
+2
View File
@@ -3,6 +3,7 @@ import documentRoutes from './document.routes';
import chatRoutes from './chat.routes';
import precedentRoutes from './precedent.routes';
import caseRoutes from './case.routes';
import templateRoutes from './template.routes';
const router = Router();
@@ -13,6 +14,7 @@ router.get('/health', (req, res) => {
router.use('/documents', documentRoutes);
router.use('/chat', chatRoutes);
router.use('/cases', caseRoutes);
router.use('/templates', templateRoutes);
router.use('/', precedentRoutes); // Keeps the same paths like /api/search-precedents
export default router;
+13
View File
@@ -0,0 +1,13 @@
import { Router } from 'express';
import multer from 'multer';
import { requireAuth } from '../middleware/auth';
import { uploadTemplate, getTemplateDownloadUrl, deleteTemplate } from '../controllers/template.controller';
const router = Router();
const upload = multer({ storage: multer.memoryStorage() });
router.post('/upload', upload.single('file'), requireAuth, uploadTemplate);
router.get('/:templateId/download-url', requireAuth, getTemplateDownloadUrl);
router.delete('/:templateId', requireAuth, deleteTemplate);
export default router;