feat: sistema GastroBar PDV completo
- Backend: Fastify + Prisma/SQLite com autenticacao JWT - CRUD completo: usuarios, categorias, produtos, comandas - Sistema de comandas com itens, status, pagamento - Controle de estoque (entrada/saida automatica) - Relatorios e dashboard com KPIs - Notificacoes sonoras na cozinha - Frontend: SPA vanilla TS com tema dark glassmorphism - Mobile-first com bottom-sheet e cards compactos - Busca de comandas por periodo - Modal de detalhes com secao editavel colapsavel
This commit is contained in:
16
src/routes/product.routes.ts
Normal file
16
src/routes/product.routes.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
import { FastifyInstance } from 'fastify';
|
||||
import * as productController from '../controllers/product.controller';
|
||||
import { authenticate, requireRoles } from '../middlewares/auth.middleware';
|
||||
|
||||
export async function productRoutes(app: FastifyInstance) {
|
||||
app.get('/produtos', { preHandler: [authenticate] }, productController.listProductsController);
|
||||
app.get('/produtos/mais-vendidos', { preHandler: [authenticate] }, productController.getTopProductsController);
|
||||
app.get('/produtos/busca', { preHandler: [authenticate] }, productController.searchProductsController);
|
||||
app.get('/produtos/baixo-estoque', { preHandler: [requireRoles(['ADMIN'])] }, productController.getLowStockProductsController);
|
||||
app.get('/produtos/:id', { preHandler: [authenticate] }, productController.getProductController);
|
||||
|
||||
app.post('/produtos', { preHandler: [requireRoles(['ADMIN'])] }, productController.createProductController);
|
||||
app.put('/produtos/:id', { preHandler: [requireRoles(['ADMIN'])] }, productController.updateProductController);
|
||||
app.patch('/produtos/:id', { preHandler: [requireRoles(['ADMIN'])] }, productController.updateProductController);
|
||||
app.delete('/produtos/:id', { preHandler: [requireRoles(['ADMIN'])] }, productController.deleteProductController);
|
||||
}
|
||||
Reference in New Issue
Block a user