/
IvanRyabchenko
/
random-coffee-backend
Обзор
Документация
Войти
/
IvanRyabchenko
/
random-coffee-backend
Код
Запросы
1
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
src/controllers/category.controller.ts
46 строк
2 KB
Ivan Ryabchenko
feat(categories,products): implement CRUD endpoints with pagination
14 май 2026, 21:01
14 май 2026, 21:01
e356224
Код
Авторство
О чём код?
import type { Context } from 'hono' import { createCategorySchema } from '../dto/category.dto' import { paginationSchema } from '../dto/pagination.dto' import { addCategory, getCategoryById, listCategories, removeCategory } from '../services/category.service' import { handleServiceError } from '../utils/http-error' export async function listCategoriesController(c: Context): Promise<Response> { const parsed = paginationSchema.safeParse(c.req.query()) if (!parsed.success) { return c.json({ message: 'Invalid query params', statusCode: 400, error: parsed.error.flatten() }, 400) } const result = await listCategories(parsed.data.page, parsed.data.limit) return c.json(result, 200) } export async function getCategoryController(c: Context): Promise<Response> { try { const category = await getCategoryById(c.req.param('id') as string) return c.json(category, 200) } catch (err) { return handleServiceError(c, err) } } export async function createCategoryController(c: Context): Promise<Response> { const body = await c.req.json().catch(() => null) const parsed = createCategorySchema.safeParse(body) if (!parsed.success) { return c.json({ message: 'Validation failed', statusCode: 400, error: parsed.error.flatten() }, 400) } try { const category = await addCategory(parsed.data.name) return c.json(category, 201) } catch (err) { return handleServiceError(c, err) } } export async function deleteCategoryController(c: Context): Promise<Response> { try { await removeCategory(c.req.param('id') as string) return c.json({ message: 'Category deleted' }, 200) } catch (err) { return handleServiceError(c, err) } }