import { db } from "@link-stack/bridge-common";

interface SendFacebookMessageTaskOptions {
  token: string;
  recipient: string;
  text: string;
}

const sendFacebookMessageTask = async (
  options: SendFacebookMessageTaskOptions,
): Promise<void> => {
  const { token, text, recipient } = options;
  const { pageId, pageAccessToken } = await db
    .selectFrom("FacebookBot")
    .selectAll()
    .where("token", "=", token)
    .executeTakeFirstOrThrow();

  const endpoint = `https://graph.facebook.com/v19.0/${pageId}/messages`;

  const outgoingMessage = {
    recipient: { id: recipient },
    message: { text },
    messaging_type: "RESPONSE",
    access_token: pageAccessToken,
  };

  await fetch(endpoint, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(outgoingMessage),
  });
};

export default sendFacebookMessageTask;
