/
IvanRyabchenko
/
random-coffee-backend
Обзор
Документация
Войти
/
IvanRyabchenko
/
random-coffee-backend
Код
Запросы
1
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
src/controllers/order.controller.ts
46 строк
2 KB
Ivan Ryabchenko
feat(orders): implement Orders CRUD endpoints
14 май 2026, 21:06
14 май 2026, 21:06
7cefbbd
Код
Авторство
О чём код?
import type { Context } from 'hono' import { paginationSchema } from '../dto/pagination.dto' import { createOrderSchema } from '../dto/order.dto' import { cancelOrderById, getOrderById, listOrders, placeOrder } from '../services/order.service' import { handleServiceError } from '../utils/http-error' export async function listOrdersController(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 listOrders(parsed.data.page, parsed.data.limit) return c.json(result, 200) } export async function getOrderController(c: Context): Promise<Response> { try { const order = await getOrderById(c.req.param('id') as string) return c.json(order, 200) } catch (err) { return handleServiceError(c, err) } } export async function createOrderController(c: Context): Promise<Response> { const body = await c.req.json().catch(() => null) const parsed = createOrderSchema.safeParse(body) if (!parsed.success) { return c.json({ message: 'Validation failed', statusCode: 400, error: parsed.error.flatten() }, 400) } try { const order = await placeOrder(parsed.data) return c.json(order, 201) } catch (err) { return handleServiceError(c, err) } } export async function cancelOrderController(c: Context): Promise<Response> { try { const order = await cancelOrderById(c.req.param('id') as string) return c.json(order, 200) } catch (err) { return handleServiceError(c, err) } }