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

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

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

    const title = formData.get('title')?.toString() ?? '';
    const slug = formData.get('slug')?.toString() ?? '';
    const content = formData.get('content')?.toString() ?? '';
    const description = formData.get('description')?.toString() ?? '';
    const status = formData.get('status')?.toString() === 'true';
    const imageFile = formData.get('image') as File | null;
    const author = formData.get('author')?.toString() ?? '';
    const category = formData.get('category')?.toString() ?? '';
    const postBy = formData.get('postBy')?.toString() ?? '';
    const editBy = formData.get('editBy')?.toString() ?? '';

    const imageUrl = await handleImageUpload(imageFile);

    const newBlog = await db.insert(blog).values({
      id: crypto.randomUUID(),
      title,
      slug,
      content,
      description,
      status,
      image: imageUrl,
      author,
      category,
      postBy,
      editBy,
      createdAt: new Date(),
      updatedAt: new Date(),
    });

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