// app/api/table-presets/route.ts import { NextRequest, NextResponse } from "next/server" import { getServerSession } from "next-auth" import { authOptions } from "@/app/api/auth/[...nextauth]/route" import db from "@/db/db" import { eq, and, or } from "drizzle-orm" import { tablePresets } from "@/db/schema/setting" export async function GET(request: NextRequest) { try { const session = await getServerSession(authOptions) if (!session?.user?.id) { return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) } const { searchParams } = new URL(request.url) const tableId = searchParams.get("tableId") if (!tableId) { return NextResponse.json({ error: "tableId is required" }, { status: 400 }) } // 사용자의 프리셋 + 공유된 프리셋 조회 const presets = await db .select() .from(tablePresets) .where( and( eq(tablePresets.tableId, tableId), or( eq(tablePresets.userId, session.user.id), eq(tablePresets.isShared, true) ) ) ) .orderBy(tablePresets.createdAt) return NextResponse.json(presets) } catch (error) { console.error("Error fetching presets:", error) return NextResponse.json({ error: "Internal Server Error" }, { status: 500 }) } } export async function POST(request: NextRequest) { try { const session = await getServerSession(authOptions) if (!session?.user?.id) { return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) } const body = await request.json() const { tableId, name, settings, isDefault } = body // 기본 프리셋으로 설정하는 경우 기존 기본 프리셋 해제 if (isDefault) { await db .update(tablePresets) .set({ isDefault: false }) .where( and( eq(tablePresets.userId, session.user.id), eq(tablePresets.tableId, tableId) ) ) } const newPreset = await db .insert(tablePresets) .values({ userId: session.user.id, tableId, name, settings, isDefault: Boolean(isDefault), isActive: true, createdBy: session.user.id, }) .returning() // 다른 프리셋들의 active 상태 해제 await db .update(tablePresets) .set({ isActive: false }) .where( and( eq(tablePresets.userId, session.user.id), eq(tablePresets.tableId, tableId), eq(tablePresets.id, newPreset[0].id) ) ) return NextResponse.json(newPreset[0]) } catch (error) { console.error("Error creating preset:", error) return NextResponse.json({ error: "Internal Server Error" }, { status: 500 }) } }