import { eq } from "drizzle-orm";
import { db } from "../../../../database/dbclient.js";
import { invHistoricalData } from "../../../../database/schema/historicalINV.js";
import { tryCatch } from "../../../globalUtils/tryCatch.js";
import { format } from "date-fns";
import { settings } from "../../../../database/schema/settings.js";

export const historicalInvByDate = async (
    date: string,
    includePlantToken: boolean = false
) => {
    const histDate = new Date(date);

    const { data, error } = (await tryCatch(
        db
            .select()
            .from(invHistoricalData)
            .where(
                eq(invHistoricalData.histDate, format(histDate, "yyyy-MM-dd"))
            )
    )) as any;

    if (error) {
        return {
            success: false,
            message: "There was an error with getting the inventory",
            data: error,
        };
    }

    if (includePlantToken) {
        const { data: s, error: se } = (await tryCatch(
            db.select().from(settings).where(eq(settings.name, "plantToken"))
        )) as any;

        if (se) {
            console.log("Error getting articles");
            return data;
        }

        return {
            success: true,
            message: `Historical inventory for ${date}`,
            data: data.map((n: any) => {
                return { plantToken: s[0].value, ...n };
            }),
        };
    } else {
        return {
            success: true,
            message: `Historical inventory for ${date}`,
            data: data,
        };
    }
};
