import { NextRequest, NextResponse } from 'next/server'; import { getSession } from '@/lib/session'; import { db } from '@/lib/db'; import { users } from '@/lib/db/schema'; import { eq } from 'drizzle-orm'; export async function GET(request: NextRequest) { try { const session = await getSession(); if (!session) { return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }); } const user = await db .select({ themePreference: users.themePreference, }) .from(users) .where(eq(users.id, session.userId)) .limit(1); if (user.length === 0) { return NextResponse.json({ error: 'User not found' }, { status: 404 }); } return NextResponse.json({ themePreference: user[0].themePreference, }); } catch (error) { console.error('Error fetching theme preference:', error); return NextResponse.json({ error: 'Internal server error' }, { status: 500 }); } } export async function PUT(request: NextRequest) { try { const session = await getSession(); if (!session) { return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }); } const { themePreference } = await request.json(); if (!themePreference || !['light', 'dark', 'system'].includes(themePreference)) { return NextResponse.json({ error: 'Invalid theme preference' }, { status: 400 }); } await db .update(users) .set({ themePreference, updatedAt: new Date(), }) .where(eq(users.id, session.userId)); return NextResponse.json({ message: 'Theme preference updated successfully', themePreference, }); } catch (error) { console.error('Error updating theme preference:', error); return NextResponse.json({ error: 'Internal server error' }, { status: 500 }); } }