import { NextRequest, NextResponse } from 'next/server'
import { PrismaClient } from '../../../src/generated/prisma'

const prisma = new PrismaClient()

// Create a new session
export async function POST(request: NextRequest) {
  try {
    const body = await request.json().catch(() => ({}))
    
    const session = await prisma.session.create({
      data: {
        title: body.title || 'New Session',
        bpm: body.bpm || 120,
        keySignature: body.keySignature || 'C major'
      }
    })
    
    return NextResponse.json({ 
      sessionId: session.id,
      bpm: session.bpm,
      keySignature: session.keySignature,
      createdAt: session.createdAt 
    })
  } catch (error) {
    console.error('Failed to create session:', error)
    return NextResponse.json(
      { error: 'Failed to create session' },
      { status: 500 }
    )
  }
}

// Get session info
export async function GET(request: NextRequest) {
  try {
    const { searchParams } = new URL(request.url)
    const sessionId = searchParams.get('id')
    
    if (!sessionId) {
      return NextResponse.json(
        { error: 'Session ID required' },
        { status: 400 }
      )
    }
    
    const session = await prisma.session.findUnique({
      where: { id: sessionId },
      include: {
        layers: {
          orderBy: { orderIndex: 'asc' }
        }
      }
    })
    
    if (!session) {
      return NextResponse.json(
        { error: 'Session not found' },
        { status: 404 }
      )
    }
    
    return NextResponse.json(session)
  } catch (error) {
    console.error('Failed to get session:', error)
    return NextResponse.json(
      { error: 'Failed to get session' },
      { status: 500 }
    )
  }
}