import { createServerClient, type CookieOptions } from '@supabase/ssr' import type { Database } from './database.types' import type { AstroCookies } from 'astro' export function createSupabaseServerClient( cookies: AstroCookies, cookieOptions?: CookieOptions ) { return createServerClient( import.meta.env.PUBLIC_SUPABASE_URL!, import.meta.env.PUBLIC_SUPABASE_ANON_KEY!, { cookies: { get(name: string) { return cookies.get(name)?.value }, set(name: string, value: string, options: CookieOptions) { cookies.set(name, value, options) }, remove(name: string, options: CookieOptions) { cookies.delete(name, options) }, }, cookieOptions, } ) } // Helper to create a client from Request headers (for API routes) export function createSupabaseServerClientFromRequest(request: Request) { const cookieHeader = request.headers.get('Cookie') || '' return createServerClient( import.meta.env.PUBLIC_SUPABASE_URL!, import.meta.env.PUBLIC_SUPABASE_ANON_KEY!, { cookies: { get(name: string) { const cookies = parseCookies(cookieHeader) return cookies[name] }, set() { // Can't set cookies in request context }, remove() { // Can't remove cookies in request context }, }, } ) } function parseCookies(cookieHeader: string): Record { return cookieHeader.split(';').reduce((acc, cookie) => { const [key, value] = cookie.trim().split('=') if (key && value) { acc[key] = decodeURIComponent(value) } return acc }, {} as Record) }