import { NextResponse } from "next/server";
import { db } from "@link-stack/bridge-common";
import { revalidatePath } from "next/cache";
import { Service, ServiceParams } from "./service";

export class Whatsapp extends Service {
  async getBot({ params: { token } }: ServiceParams) {
    const row = await db
      .selectFrom("WhatsappBot")
      .selectAll()
      .where("token", "=", token as string)
      .executeTakeFirstOrThrow();
    const id = row.id;
    const url = `${process.env.BRIDGE_WHATSAPP_URL}/api/bots/${id}`;
    const result = await fetch(url, { cache: "no-store" });
    const json = await result.json();

    await db
      .updateTable("WhatsappBot")
      .set({ verified: json.verified })
      .where("id", "=", id)
      .execute();

    if (!json.verified) {
      const url = `${process.env.BRIDGE_WHATSAPP_URL}/api/bots/${id}/register`;
      const result = await fetch(url, { method: "POST" });
    }

    revalidatePath(`/whatsapp/${id}`);

    return NextResponse.json(json);
  }
}
