import { NextResponse } from 'next/server'
import { skillRepo } from '@/lib/database/repositories/skill.repo'
import { isAuthError, requireUser } from '@/lib/auth/session'
import crypto from 'crypto'

export async function GET() {
  let user
  try { user = await requireUser() } catch (err) { if (isAuthError(err)) return err; throw err }
  const skills = skillRepo.listByUser(user.id)
  return NextResponse.json(skills)
}

export async function POST(req: Request) {
  let user
  try { user = await requireUser() } catch (err) { if (isAuthError(err)) return err; throw err }
  const body = await req.json()
  const id = crypto.randomUUID()

  const skill = skillRepo.create({
    id,
    userId: user.id,
    name: body.name || undefined,
    description: body.description || undefined,
    scope: body.scope || undefined,
    content: body.content || undefined,
  })

  return NextResponse.json(skill, { status: 201 })
}
