import { NextRequest, NextResponse } from 'next/server'; import { purchaseDb } from '@/lib/db'; import { Purchase } from '@/lib/types'; // GET - Get all purchases export async function GET(request: NextRequest) { try { const { searchParams } = new URL(request.url); const albumId = searchParams.get('albumId'); let purchases; if (albumId) { purchases = purchaseDb.getByAlbumId(albumId); } else { purchases = purchaseDb.getAll(); } return NextResponse.json(purchases, { status: 200 }); } catch (error) { console.error('Error fetching purchases:', error); return NextResponse.json( { error: 'Failed to fetch purchases' }, { status: 500 } ); } } // POST - Create new purchase export async function POST(request: NextRequest) { try { const purchaseData: Omit = await request.json(); // Validate required fields if (!purchaseData.albumId || !purchaseData.transactionId) { return NextResponse.json( { error: 'Missing required fields' }, { status: 400 } ); } // Check if transaction ID already exists const existing = purchaseDb.getByTransactionId(purchaseData.transactionId); if (existing) { return NextResponse.json( { error: 'Transaction ID already exists' }, { status: 409 } ); } // Ensure purchaseDate is set const purchase: Omit = { ...purchaseData, purchaseDate: purchaseData.purchaseDate || new Date(), }; const created = purchaseDb.create(purchase); return NextResponse.json(created, { status: 201 }); } catch (error) { console.error('Error creating purchase:', error); return NextResponse.json( { error: 'Failed to create purchase' }, { status: 500 } ); } } // DELETE - Delete purchase export async function DELETE(request: NextRequest) { try { const { searchParams } = new URL(request.url); const id = searchParams.get('id'); if (!id) { return NextResponse.json( { error: 'Purchase ID is required' }, { status: 400 } ); } purchaseDb.delete(parseInt(id)); return NextResponse.json({ message: 'Purchase deleted successfully' }, { status: 200 }); } catch (error) { console.error('Error deleting purchase:', error); return NextResponse.json( { error: 'Failed to delete purchase' }, { status: 500 } ); } }