diff --git a/src/app/api/admin/backups/[id]/restore/route.ts b/src/app/api/admin/backups/[id]/restore/route.ts index 6839490bd..c7b1f6512 100644 --- a/src/app/api/admin/backups/[id]/restore/route.ts +++ b/src/app/api/admin/backups/[id]/restore/route.ts @@ -43,7 +43,7 @@ import { summarizeBackup, type BackupSummary, } from "@/lib/validations/backup"; -import { recomputeUserMoodRollups } from "@/lib/mood/rollups"; +import { recomputeUserMoodRollups } from "@/lib/rollups/mood-rollups"; import { recomputeUserMedicationCompliance, MEDICATION_COMPLIANCE_BACKFILL_DAYS, diff --git a/src/app/api/import/__tests__/route.test.ts b/src/app/api/import/__tests__/route.test.ts index 32a738704..b4748cbc0 100644 --- a/src/app/api/import/__tests__/route.test.ts +++ b/src/app/api/import/__tests__/route.test.ts @@ -41,7 +41,7 @@ vi.mock("@/lib/rollups/measurement-rollups", async () => { }; }); -vi.mock("@/lib/mood/rollups", () => ({ +vi.mock("@/lib/rollups/mood-rollups", () => ({ recomputeUserMoodRollups: vi.fn().mockResolvedValue(undefined), })); diff --git a/src/app/api/import/route.ts b/src/app/api/import/route.ts index 8104acf36..e8ec780e5 100644 --- a/src/app/api/import/route.ts +++ b/src/app/api/import/route.ts @@ -17,7 +17,7 @@ import { measurementTypeEnum, glucoseContextEnum, } from "@/lib/validations/measurement"; -import { recomputeUserMoodRollups } from "@/lib/mood/rollups"; +import { recomputeUserMoodRollups } from "@/lib/rollups/mood-rollups"; import { collapseToTypeDayKeys, recomputeBucketsForMeasurement, diff --git a/src/app/api/insights/comprehensive/__tests__/route.test.ts b/src/app/api/insights/comprehensive/__tests__/route.test.ts index 4f15650fc..637a40e5a 100644 --- a/src/app/api/insights/comprehensive/__tests__/route.test.ts +++ b/src/app/api/insights/comprehensive/__tests__/route.test.ts @@ -34,9 +34,9 @@ vi.mock("@/lib/db", () => ({ // v1.4.40 — stub the mood-rollup warm-up so test runs don't fire the // real recompute against the mocked Prisma. The route fires the // warm-up as fire-and-forget; the return value is irrelevant. -vi.mock("@/lib/mood/rollups", async () => { - const actual = await vi.importActual( - "@/lib/mood/rollups", +vi.mock("@/lib/rollups/mood-rollups", async () => { + const actual = await vi.importActual( + "@/lib/rollups/mood-rollups", ); return { ...actual, diff --git a/src/app/api/insights/comprehensive/route.ts b/src/app/api/insights/comprehensive/route.ts index 4e825f2d2..09b85fa7c 100644 --- a/src/app/api/insights/comprehensive/route.ts +++ b/src/app/api/insights/comprehensive/route.ts @@ -25,7 +25,7 @@ import { buildComprehensiveAggregate } from "@/lib/insights/comprehensive-aggreg import { ensureUserMoodRollupsFresh, readMoodDayRollups, -} from "@/lib/mood/rollups"; +} from "@/lib/rollups/mood-rollups"; export const dynamic = "force-dynamic"; diff --git a/src/app/api/insights/targets/__tests__/route.test.ts b/src/app/api/insights/targets/__tests__/route.test.ts index 3aa47268f..47ea4f4aa 100644 --- a/src/app/api/insights/targets/__tests__/route.test.ts +++ b/src/app/api/insights/targets/__tests__/route.test.ts @@ -68,9 +68,9 @@ vi.mock("next/headers", () => ({ // Stub the warm-up so test runs don't fire the real // `recomputeUserMoodRollups` aggregate. The warm-up is fire-and-forget // on the route so its return value is irrelevant for parity. -vi.mock("@/lib/mood/rollups", async () => { - const actual = await vi.importActual( - "@/lib/mood/rollups", +vi.mock("@/lib/rollups/mood-rollups", async () => { + const actual = await vi.importActual( + "@/lib/rollups/mood-rollups", ); return { ...actual, diff --git a/src/app/api/insights/targets/route.ts b/src/app/api/insights/targets/route.ts index 04db0e8cf..c613fbd32 100644 --- a/src/app/api/insights/targets/route.ts +++ b/src/app/api/insights/targets/route.ts @@ -36,7 +36,7 @@ import { thresholdMetricForContext, resolveGlucoseUnit } from "@/lib/glucose"; import { ensureUserMoodRollupsFresh, readMoodDayRollups, -} from "@/lib/mood/rollups"; +} from "@/lib/rollups/mood-rollups"; export const dynamic = "force-dynamic"; diff --git a/src/app/api/integrations/moodlog/webhook/route.ts b/src/app/api/integrations/moodlog/webhook/route.ts index 3fda9c2bd..d9c7fd2b5 100644 --- a/src/app/api/integrations/moodlog/webhook/route.ts +++ b/src/app/api/integrations/moodlog/webhook/route.ts @@ -8,7 +8,7 @@ import { moodLogWebhookPayloadSchema } from "@/lib/validations/moodlog"; import { readMoodLogSecret } from "@/lib/moodlog-secret"; import { apiHandler } from "@/lib/api-handler"; import { annotate, getEvent } from "@/lib/logging/context"; -import { recomputeMoodBucketsForEntry } from "@/lib/mood/rollups"; +import { recomputeMoodBucketsForEntry } from "@/lib/rollups/mood-rollups"; export const dynamic = "force-dynamic"; diff --git a/src/app/api/mood-entries/[id]/route.ts b/src/app/api/mood-entries/[id]/route.ts index 8eaeacebc..c57faf321 100644 --- a/src/app/api/mood-entries/[id]/route.ts +++ b/src/app/api/mood-entries/[id]/route.ts @@ -15,7 +15,7 @@ import { apiHandler, requireAuth } from "@/lib/api-handler"; import { annotate } from "@/lib/logging/context"; import { moodDateKey, DEFAULT_TIMEZONE } from "@/lib/mood/date-key"; import { invalidateUserMood } from "@/lib/cache/invalidate"; -import { recomputeMoodBucketsForEntry } from "@/lib/mood/rollups"; +import { recomputeMoodBucketsForEntry } from "@/lib/rollups/mood-rollups"; type RouteParams = { params: Promise<{ id: string }> }; diff --git a/src/app/api/mood-entries/bulk/route.ts b/src/app/api/mood-entries/bulk/route.ts index 69ed1368c..c1090d550 100644 --- a/src/app/api/mood-entries/bulk/route.ts +++ b/src/app/api/mood-entries/bulk/route.ts @@ -43,7 +43,7 @@ import { } from "@/lib/validations/moodlog"; import { moodDateKey, DEFAULT_TIMEZONE } from "@/lib/mood/date-key"; import { invalidateUserMood } from "@/lib/cache/invalidate"; -import { recomputeMoodBucketsForEntry } from "@/lib/mood/rollups"; +import { recomputeMoodBucketsForEntry } from "@/lib/rollups/mood-rollups"; const MAX_ENTRIES_PER_BATCH = 500; const BATCH_RATE_LIMIT_MAX = 60; diff --git a/src/app/api/mood-entries/route.ts b/src/app/api/mood-entries/route.ts index f0a86210d..86c1a491d 100644 --- a/src/app/api/mood-entries/route.ts +++ b/src/app/api/mood-entries/route.ts @@ -18,7 +18,7 @@ import { annotate } from "@/lib/logging/context"; import { withIdempotency } from "@/lib/idempotency"; import { moodDateKey, DEFAULT_TIMEZONE } from "@/lib/mood/date-key"; import { invalidateUserMood } from "@/lib/cache/invalidate"; -import { recomputeMoodBucketsForEntry } from "@/lib/mood/rollups"; +import { recomputeMoodBucketsForEntry } from "@/lib/rollups/mood-rollups"; function parseTags(tags: string | null): string[] { if (!tags) return []; diff --git a/src/app/api/mood/analytics/__tests__/route.test.ts b/src/app/api/mood/analytics/__tests__/route.test.ts index 9c31b25e7..8db206d4e 100644 --- a/src/app/api/mood/analytics/__tests__/route.test.ts +++ b/src/app/api/mood/analytics/__tests__/route.test.ts @@ -53,9 +53,9 @@ vi.mock("next/headers", () => ({ // Stub the warm-up helper so test runs don't fire the real // `recomputeUserMoodRollups` aggregate. The warm-up is fire-and- // forget on the route so its return value is irrelevant for parity. -vi.mock("@/lib/mood/rollups", async () => { - const actual = await vi.importActual( - "@/lib/mood/rollups", +vi.mock("@/lib/rollups/mood-rollups", async () => { + const actual = await vi.importActual( + "@/lib/rollups/mood-rollups", ); return { ...actual, diff --git a/src/app/api/mood/analytics/route.ts b/src/app/api/mood/analytics/route.ts index 7e11d12dd..9b911f34b 100644 --- a/src/app/api/mood/analytics/route.ts +++ b/src/app/api/mood/analytics/route.ts @@ -7,7 +7,7 @@ import { cached, caches, type ServerCache } from "@/lib/cache/server-cache"; import { ensureUserMoodRollupsFresh, readMoodDayRollups, -} from "@/lib/mood/rollups"; +} from "@/lib/rollups/mood-rollups"; export const dynamic = "force-dynamic"; diff --git a/src/lib/insights/__tests__/features.test.ts b/src/lib/insights/__tests__/features.test.ts index 514955225..14f21267a 100644 --- a/src/lib/insights/__tests__/features.test.ts +++ b/src/lib/insights/__tests__/features.test.ts @@ -15,9 +15,9 @@ vi.mock("@/lib/db", () => ({ // Stub the mood-rollup warm-up so test runs don't fire the real // recompute aggregate. The warm-up is fire-and-forget on the route. -vi.mock("@/lib/mood/rollups", async () => { - const actual = await vi.importActual( - "@/lib/mood/rollups", +vi.mock("@/lib/rollups/mood-rollups", async () => { + const actual = await vi.importActual( + "@/lib/rollups/mood-rollups", ); return { ...actual, diff --git a/src/lib/insights/features.ts b/src/lib/insights/features.ts index 9fb4df041..b77b53d52 100644 --- a/src/lib/insights/features.ts +++ b/src/lib/insights/features.ts @@ -19,7 +19,7 @@ import { readRollupBuckets } from "@/lib/rollups/measurement-rollups"; import { ensureUserMoodRollupsFresh, readMoodDayRollups, -} from "@/lib/mood/rollups"; +} from "@/lib/rollups/mood-rollups"; import type { MeasurementType, RollupGranularity, diff --git a/src/lib/jobs/reminder-worker.ts b/src/lib/jobs/reminder-worker.ts index 4f2a0989e..cc984f044 100644 --- a/src/lib/jobs/reminder-worker.ts +++ b/src/lib/jobs/reminder-worker.ts @@ -76,7 +76,7 @@ import { recomputeUserMoodRollups, type MoodRollupFullBackfillPayload, type MoodRollupRecomputePayload, -} from "@/lib/mood/rollups"; +} from "@/lib/rollups/mood-rollups"; import { MEDICATION_COMPLIANCE_BACKFILL_QUEUE, MEDICATION_COMPLIANCE_BACKFILL_CONCURRENCY, diff --git a/src/lib/moodlog/sync.ts b/src/lib/moodlog/sync.ts index 952715385..c4a49804b 100644 --- a/src/lib/moodlog/sync.ts +++ b/src/lib/moodlog/sync.ts @@ -7,7 +7,7 @@ import { recordSyncFailure, recordSyncSuccess, } from "@/lib/integrations/status"; -import { recomputeUserMoodRollups } from "@/lib/mood/rollups"; +import { recomputeUserMoodRollups } from "@/lib/rollups/mood-rollups"; /** * Sync mood entries from a user's moodLog instance. diff --git a/src/lib/mood/__tests__/rollups.test.ts b/src/lib/rollups/__tests__/mood-rollups.test.ts similarity index 99% rename from src/lib/mood/__tests__/rollups.test.ts rename to src/lib/rollups/__tests__/mood-rollups.test.ts index 5b5d6ff99..d7f4d6e4f 100644 --- a/src/lib/mood/__tests__/rollups.test.ts +++ b/src/lib/rollups/__tests__/mood-rollups.test.ts @@ -83,7 +83,7 @@ import { enqueueMoodRollupRecompute, ensureUserMoodRollupsFresh, recomputeMoodBucketsForEntry, -} from "../rollups"; +} from "../mood-rollups"; beforeEach(() => { queryRaw.mockReset(); diff --git a/src/lib/mood/rollups.ts b/src/lib/rollups/mood-rollups.ts similarity index 100% rename from src/lib/mood/rollups.ts rename to src/lib/rollups/mood-rollups.ts