import { NextResponse } from 'next/server';
import { db } from '@/db/drizzle';
import { page } from '@/db/schema';
import { handleImageUpload } from '@/lib/image-upload';

export async function GET() {
  try {
    const pages = await db.select().from(page);
    return NextResponse.json(pages);
  } catch (error) {
    console.error('Error fetching pages:', error);
    return NextResponse.json(
      { message: 'Failed to fetch pages' },
      { status: 500 }
    );
  }
}

export async function POST(req: Request) {
  try {
    const formData = await req.formData();

    const pageTitle = formData.get('pageTitle')?.toString() ?? '';
    const pageContents = formData.get('pageContents')?.toString() ?? '';
    const pageSlug = formData.get('pageSlug')?.toString() ?? '';
    const pageMore = formData.get('pageMore')?.toString() ?? '';
    const pageImageFile = formData.get('pageImage') as File | null;

    const imageUrl = await handleImageUpload(pageImageFile);

    const newPage = await db.insert(page).values({
      id: crypto.randomUUID(),
      pageTitle,
      pageContents,
      pageImage: imageUrl,
      pageSlug,
      pageMore,
      createdAt: new Date(),
      updatedAt: new Date(),
    });

    return NextResponse.json(newPage, { status: 201 });
  } catch (error: any) {
    console.error('Error creating page:', error);
    return NextResponse.json(
      { message: error.message || 'Failed to create page' },
      { status: 500 }
    );
  }
}
