import { NextRequest, NextResponse } from 'next/server' import { createClient } from '@supabase/supabase-js' // Create server-side Supabase client with user session function createServerSupabaseClient(request: Request) { const authHeader = request.headers.get('authorization') return createClient( process.env.NEXT_PUBLIC_SUPABASE_URL!, process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!, { auth: { autoRefreshToken: false, persistSession: false }, global: { headers: authHeader ? { Authorization: authHeader } : {} } } ) } export async function GET(req: NextRequest) { try { const supabase = createServerSupabaseClient(req) // Get current user const { data: { user }, error: authError } = await supabase.auth.getUser() if (authError || !user) { return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }) } const { searchParams } = new URL(req.url) const bookId = searchParams.get('bookId') const limit = parseInt(searchParams.get('limit') || '20') const offset = parseInt(searchParams.get('offset') || '0') // Build query let query = supabase .from('generated_images') .select('*') .eq('user_id', user.id) .order('created_at', { ascending: false }) .range(offset, offset + limit - 1) // Filter by book if specified if (bookId) { query = query.eq('book_id', bookId) } const { data: images, error } = await query if (error) { return NextResponse.json({ error: 'Failed to fetch images' }, { status: 500 }) } return NextResponse.json({ images: images || [], pagination: { limit, offset, hasMore: images?.length === limit } }) } catch (error) { return NextResponse.json({ error: 'Failed to fetch images' }, { status: 500 }) } } // DELETE endpoint to remove generated images export async function DELETE(req: NextRequest) { try { const supabase = createServerSupabaseClient(req) // Get current user const { data: { user }, error: authError } = await supabase.auth.getUser() if (authError || !user) { return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }) } const { imageId } = await req.json() if (!imageId) { return NextResponse.json({ error: 'Image ID is required' }, { status: 400 }) } // Delete the image (RLS will ensure user can only delete their own images) const { error } = await supabase .from('generated_images') .delete() .eq('id', imageId) .eq('user_id', user.id) if (error) { return NextResponse.json({ error: 'Failed to delete image' }, { status: 500 }) } return NextResponse.json({ success: true }) } catch (error) { return NextResponse.json({ error: 'Failed to delete image' }, { status: 500 }) } }