mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-06-19 21:31:46 +00:00
36 lines
1.4 KiB
TypeScript
36 lines
1.4 KiB
TypeScript
import express, { Request, Response } from 'express';
|
|
import { authenticate, adminOnly } from '../middleware/auth';
|
|
import { AuthRequest } from '../types';
|
|
import * as categoryService from '../services/categoryService';
|
|
|
|
const router = express.Router();
|
|
|
|
router.get('/', authenticate, (_req: Request, res: Response) => {
|
|
res.json({ categories: categoryService.listCategories() });
|
|
});
|
|
|
|
router.post('/', authenticate, adminOnly, (req: Request, res: Response) => {
|
|
const authReq = req as AuthRequest;
|
|
const { name, color, icon } = req.body;
|
|
if (!name) return res.status(400).json({ error: 'Category name is required' });
|
|
const category = categoryService.createCategory(authReq.user.id, name, color, icon);
|
|
res.status(201).json({ category });
|
|
});
|
|
|
|
router.put('/:id', authenticate, adminOnly, (req: Request, res: Response) => {
|
|
const { name, color, icon } = req.body;
|
|
if (!categoryService.getCategoryById(req.params.id))
|
|
return res.status(404).json({ error: 'Category not found' });
|
|
const category = categoryService.updateCategory(req.params.id, name, color, icon);
|
|
res.json({ category });
|
|
});
|
|
|
|
router.delete('/:id', authenticate, adminOnly, (req: Request, res: Response) => {
|
|
if (!categoryService.getCategoryById(req.params.id))
|
|
return res.status(404).json({ error: 'Category not found' });
|
|
categoryService.deleteCategory(req.params.id);
|
|
res.json({ success: true });
|
|
});
|
|
|
|
export default router;
|