import { logError, logInfo } from "@/lib/logger";
import type { Kysely } from "kysely";

export async function processScheduledOffers(db: Kysely<any>): Promise<void> {
  try {
    const now = new Date();

    const dueOffers = await db
      .selectFrom("member_offers" as any)
      .select(["id", "name"])
      .where("publish_mode", "=", "SCHEDULED")
      .where("scheduled_publish_at", "<=", now)
      .execute();

    if (dueOffers.length === 0) return;

    for (const offer of dueOffers) {
      try {
        await db
          .updateTable("member_offers" as any)
          .set({ publish_mode: "PUBLISHED", published_at: now, updated_at: now })
          .where("id", "=", offer.id)
          .where("publish_mode", "=", "SCHEDULED")
          .execute();

        logInfo(`[ScheduledOffers] Published offer ${offer.id} (${offer.name})`);
      } catch (innerErr: any) {
        logError(`[ScheduledOffers] Failed to publish offer ${offer.id}: ${innerErr.message}`);
      }
    }
  } catch (err: any) {
    logError(`[ScheduledOffers] processScheduledOffers error: ${err.message}`);
  }
}
