import { SubscriptionStatus } from "@prisma/client";
import dayjs from "dayjs";
import { prisma } from "../config/db.ts";
import { nowUTC } from "../utils/time.ts";

let isProcessingSubscriptions = false;

export const processExpiredSubscriptions = async () => {
    if (isProcessingSubscriptions) {
        console.log("⚠️ Subscription expiration job already running. Skipping...");
        return;
    }

    isProcessingSubscriptions = true;

    try {
        console.log("📦 Running subscription expiration check...");

        const now = nowUTC();

        const { count } = await prisma.subscription.updateMany({
            where: {
                status: SubscriptionStatus.ACTIVE,
                isCurrent: true,
                endDate: {
                    lt: now,
                },
            },
            data: {
                status: SubscriptionStatus.EXPIRED,
                updatedAt: now, // if your schema has updatedAt without @updatedAt
            },
        });

        console.log(`✅ [${dayjs(now).format("YYYY-MM-DD HH:mm:ss")}] Expired ${count} subscriptions`);
    } catch (error) {
        console.error("❌ Subscription expiration cron failed:", error);
    } finally {
        isProcessingSubscriptions = false;
    }
}; 