diff --git a/backend/src/v1/services/dashboard-metrics-service.spec.ts b/backend/src/v1/services/dashboard-metrics-service.spec.ts index 3b3aef602..05c49b578 100644 --- a/backend/src/v1/services/dashboard-metrics-service.spec.ts +++ b/backend/src/v1/services/dashboard-metrics-service.spec.ts @@ -1,3 +1,4 @@ + describe('dashboard-metrics-service', () => { describe('getDashboardMetrics', () => { it('should return the dashboard metrics', async () => { @@ -8,7 +9,10 @@ describe('dashboard-metrics-service', () => { const reportsCount = 3; const prismaMock = { announcement: { - count: jest.fn().mockResolvedValueOnce(publishedAnnouncements).mockResolvedValueOnce(draftAnnouncements), + groupBy: jest.fn().mockResolvedValueOnce([ + { status: 'PUBLISHED', _count: publishedAnnouncements }, + { status: 'DRAFT', _count: draftAnnouncements }, + ]), }, pay_transparency_report: { count: jest.fn().mockResolvedValueOnce(reportsCount), diff --git a/backend/src/v1/services/dashboard-metrics-service.ts b/backend/src/v1/services/dashboard-metrics-service.ts index 44f0892de..20237dbfd 100644 --- a/backend/src/v1/services/dashboard-metrics-service.ts +++ b/backend/src/v1/services/dashboard-metrics-service.ts @@ -12,17 +12,16 @@ interface IGetDashboardMetricsInput { export const getDashboardMetrics = async ({ reportingYear, }: IGetDashboardMetricsInput) => { - const publishedAnnouncements = await prisma.announcement.count({ - where: { - status: 'PUBLISHED', - }, - }); - - const draftAnnouncements = await prisma.announcement.count({ - where: { - status: 'DRAFT', - }, + const announcementsData = await prisma.announcement.groupBy({ + where: { status: { in: ['PUBLISHED', 'DRAFT'] } }, + by: ['status'], + _count: true, }); + + const announcementsMetrics = announcementsData.reduce((acc, curr) => { + const key = curr.status.toLowerCase(); + return { ...acc, [key]: curr._count }; + }, {}); const reportsCount = await prisma.pay_transparency_report.count({ where: { @@ -30,10 +29,7 @@ export const getDashboardMetrics = async ({ }, }); return { - announcements: { - published: publishedAnnouncements, - draft: draftAnnouncements, - }, + announcements: announcementsMetrics, reports: { count: reportsCount, },