add library management

This commit is contained in:
2026-03-25 16:40:01 -04:00
parent ff3cfe7ec3
commit 90528c4768
9 changed files with 552 additions and 53 deletions

View File

@@ -1,12 +1,41 @@
import { NextResponse } from 'next/server'
import { getLibraries } from '@/lib/libraries'
import { NextRequest, NextResponse } from 'next/server'
import { getLibraries, addLibrary } from '@/lib/libraries'
import type { LibraryType } from '@/types'
export function GET() {
try {
const libraries = getLibraries()
return NextResponse.json(libraries)
} catch (err) {
console.error('Failed to read libraries.json', err)
console.error('Failed to read libraries', err)
return NextResponse.json({ error: 'Failed to load libraries' }, { status: 500 })
}
}
export async function POST(request: NextRequest) {
let body: { name?: string; path?: string; type?: string }
try {
body = await request.json()
} catch {
return NextResponse.json({ error: 'Invalid JSON body' }, { status: 400 })
}
const { name, path, type } = body
if (!name || !path || !type) {
return NextResponse.json({ error: 'name, path, and type are required' }, { status: 400 })
}
const validTypes: LibraryType[] = ['games', 'mixed']
if (!validTypes.includes(type as LibraryType)) {
return NextResponse.json({ error: `type must be one of: ${validTypes.join(', ')}` }, { status: 400 })
}
try {
const library = addLibrary(name, path, type as LibraryType)
return NextResponse.json(library, { status: 201 })
} catch (err) {
const message = err instanceof Error ? err.message : 'Failed to add library'
return NextResponse.json({ error: message }, { status: 400 })
}
}