Skip to content

feat: API Endpoints Agregadores para Dashboard (issue #15)

O que foi feito

src/dashboard/dto/dashboard-summary.dto.ts: novo arquivo

Criados dois DTOs:

  • ChartItemDto representa um item do gráfico com month (formato YYYY-MM) e total (valor em R$)
  • DashboardSummaryDto encapsula o retorno completo com totalClients, totalSalesVolume e chart

src/dashboard/dashboard.service.ts: novo arquivo

Implementado o método getSummary() que realiza 3 consultas ao banco:

  1. prisma.client.count(): total de clientes cadastrados
  2. prisma.purchase.aggregate({ _sum: { value } }): volume total de vendas em R$
  3. 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.

Merge request reports

Loading