diff --git a/src/lib/analyses.spec.ts b/src/lib/analyses.spec.ts index d439de7..bee6433 100644 --- a/src/lib/analyses.spec.ts +++ b/src/lib/analyses.spec.ts @@ -46,6 +46,16 @@ describe("toCoalescedCounts", () => { expect(coalescedCounts[3].count).toEqual(1); }); + it("resets count of first of month when a month", () => { + const counts = [ + { date: new Date("2023-12-31"), count: 41 }, + { date: new Date("2024-01-01"), count: 1 }, + ]; + const coalescedCounts = toCoalescedCounts(counts); + expect(coalescedCounts[0].count).toEqual(41); + expect(coalescedCounts[1].count).toEqual(1); + }); + it("sets count to 0 for multiple missing months", () => { const counts = [ { date: new Date("2024-01-01"), count: 41 }, diff --git a/src/lib/analyses.ts b/src/lib/analyses.ts index 608a95e..a5b48f4 100644 --- a/src/lib/analyses.ts +++ b/src/lib/analyses.ts @@ -49,8 +49,9 @@ export function toCoalescedCounts(counts: Counts) { return [count]; } - const monthDiff = count.date.getMonth() - lastCount.date.getMonth(); - + const monthDiff = day(count.date) + .startOf("month") + .diff(day(lastCount.date).startOf("month"), "month"); if (monthDiff > 0) { const zeroedMonths = monthDiff > 1 ? buildZeroedMonths(lastCount.date, count.date, monthDiff) : []; diff --git a/src/queries/occurances/countsQueries.ts b/src/queries/occurances/countsQueries.ts index 037f212..2a2ca4d 100644 --- a/src/queries/occurances/countsQueries.ts +++ b/src/queries/occurances/countsQueries.ts @@ -8,7 +8,7 @@ async function findCountsById(analysisId: number, timeframe: TimeFrames) { return (await prisma.$queryRaw` SELECT - DATE(occurred_at) as date, + DATE(occurred_at)::timestamp as date, SUM(amount)::INT as count, a.id FROM occurances o