import { NextRequest, NextResponse } from 'next/server'; import { prisma } from '@/lib/prisma'; import { generateShareToken, buildShareUrl } from '@/lib/share'; import type { CreateShareResponse, ApiError } from '@/types/api-types'; export async function POST( request: NextRequest, { params }: { params: Promise<{ id: string }> } ) { try { const { id } = await params; const body = await request.json().catch(() => ({})); // Verify album exists const album = await prisma.album.findUnique({ where: { id }, }); if (!album) { return NextResponse.json( { error: 'Album not found' }, { status: 404 } ); } // Generate unique token const token = generateShareToken(); // Create share record await prisma.share.create({ data: { type: 'ALBUM', targetId: id, token, platform: body.platform || null, }, }); const response: CreateShareResponse = { shareUrl: buildShareUrl(token), token, type: 'ALBUM', }; return NextResponse.json(response); } catch (error) { console.error('Create album share error:', error); return NextResponse.json( { error: 'Failed to create share link' }, { status: 500 } ); } }