// packages/api-client/src/usage.ts // daily_usage 조회 (쿼터 UI 표시용) import type { D3roSupabaseClient } from './client' import type { DailyUsage, Subscription } from './types' export async function getTodayUsage( client: D3roSupabaseClient, feature: string ): Promise { const today = new Date().toISOString().slice(0, 10) const { data, error } = await client .from('daily_usage') .select('count') .eq('date', today) .eq('feature', feature) .maybeSingle() if (error) { // RLS로 인해 빈 결과도 정상. 에러는 throw하지 않고 0 반환. return 0 } return (data?.count as number | undefined) ?? 0 } export async function listUsageLastDays( client: D3roSupabaseClient, days: number ): Promise { const since = new Date() since.setDate(since.getDate() - days) const sinceStr = since.toISOString().slice(0, 10) const { data, error } = await client .from('daily_usage') .select('*') .gte('date', sinceStr) .order('date', { ascending: false }) if (error) throw new Error(`listUsageLastDays failed: ${error.message}`) return data ?? [] } export async function getSubscription( client: D3roSupabaseClient ): Promise { const { data, error } = await client .from('subscriptions') .select('*') .maybeSingle() if (error) return null return data }