feat: API Endpoints Agregadores para Dashboard (issue #15)
O que foi feito
src/dashboard/dto/dashboard-summary.dto.ts: novo arquivo
Criados dois DTOs:
-
ChartItemDtorepresenta um item do gráfico commonth(formatoYYYY-MM) etotal(valor em R$) -
DashboardSummaryDtoencapsula o retorno completo comtotalClients,totalSalesVolumeechart
src/dashboard/dashboard.service.ts: novo arquivo
Implementado o método getSummary() que realiza 3 consultas ao banco:
-
prisma.client.count(): total de clientes cadastrados -
prisma.purchase.aggregate({ _sum: { value } }): volume total de vendas em R$ -
prisma.$queryRaw: total de vendas agrupado por mês via SQL, retornando os dados para o gráfico
O campo totalSalesVolume usa ?? 0 para tratar o retorno null do Prisma quando não há compras registradas, evitando exceções de ponteiro nulo.
src/dashboard/dashboard.controller.ts: novo arquivo
Mapeado o endpoint GET /api/dashboard/summary chamando o método getSummary() do service.
src/dashboard/dashboard.module.ts: novo arquivo
Módulo criado importando PrismaModule, registrando DashboardService como provider e DashboardController.
src/app.module.ts: modificado
Adicionado o import do DashboardModule.