import type { Prisma, PrismaClient } from '@prisma/client' import { addMonths, endOfDay, startOfDay, startOfYear, endOfYear, subDays } from 'date-fns' type SettingsClient = PrismaClient | Prisma.TransactionClient export async function getUserSetting(prisma: SettingsClient, userId: string) { return prisma.userSetting.upsert({ where: { userId }, update: {}, create: { userId } }) } export function monthRange(month: string, monthStartDay: number) { const [year, monthNumber] = month.split('-').map(Number) const normalizedDay = Math.min(Math.max(monthStartDay || 1, 1), 28) const start = startOfDay(new Date(year, monthNumber - 1, normalizedDay)) const end = endOfDay(subDays(addMonths(start, 1), 1)) return { start, end } } export function yearRange(year: string) { const start = startOfYear(new Date(`${year}-01-01T00:00:00`)) const end = endOfYear(start) return { start, end } }