import { db } from '@/lib/db';
import { NextRequest, NextResponse } from 'next/server';

// GET /api/devices — List all devices
export async function GET() {
  try {
    const devices = await db.device.findMany({
      orderBy: { createdAt: 'desc' },
    });
    return NextResponse.json({ devices });
  } catch (error: any) {
    return NextResponse.json({ error: error.message }, { status: 500 });
  }
}

// POST /api/devices — Create a new device
export async function POST(req: NextRequest) {
  try {
    const body = await req.json();
    const { body: deviceBody, name, connectionDriver = 'baileys' } = body;

    if (!deviceBody) {
      return NextResponse.json({ error: 'Device number (body) is required' }, { status: 400 });
    }

    // Ensure a default user exists
    let user = await db.user.findFirst();
    if (!user) {
      user = await db.user.create({
        data: {
          email: 'admin@mpwa.local',
          name: 'Admin',
          apiKey: 'mpwa-admin-key-' + Date.now(),
        },
      });
    }

    // Check if device already exists
    const existing = await db.device.findUnique({ where: { body: deviceBody } });
    if (existing) {
      return NextResponse.json({ error: 'Device number already exists' }, { status: 400 });
    }

    const device = await db.device.create({
      data: {
        body: deviceBody,
        name: name || deviceBody,
        connectionDriver,
        userId: user.id,
      },
    });

    return NextResponse.json({ device }, { status: 201 });
  } catch (error: any) {
    return NextResponse.json({ error: error.message }, { status: 500 });
  }
}
