Files
money.sori.studio/server/utils/userSettings.ts
2026-08-14 13:19:17 +09:00

27 lines
918 B
TypeScript

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 }
}