import { and, between, inArray, notInArray, sql } from "drizzle-orm"; import { db } from "../../../../database/dbclient.js"; import { invHistoricalData } from "../../../../database/schema/historicalINV.js"; import { tryCatch } from "../../../globalUtils/tryCatch.js"; import { createLog } from "../../logger/logger.js"; // type ArticleData = { // id: string // } export const psiGetInventory = async ( avs: string, startDate: string, endDate: string, whseToInclude: string, exludeLanes: string ) => { let articles: any = []; if (!avs) { return { success: false, message: `Missing av's please send at least one over`, data: [], }; } const ids = avs.split(",").map((id) => id.trim()); const whse = whseToInclude ? whseToInclude .split(",") .map((w) => w.trim()) .filter(Boolean) : []; const locations = exludeLanes ? exludeLanes.split(",").map((l) => l.trim()).filter(Boolean) : []; const conditions = [ inArray(invHistoricalData.article, ids), between(invHistoricalData.histDate, startDate, endDate), ]; // only add the warehouse condition if there are any whse values if (whse.length > 0) { console.log("adding whse to include in"); conditions.push(inArray(invHistoricalData.whseId, whse)); } // locations we dont want in the system if (locations.length > 0) { console.log("adding excluded lanes in ",locations); conditions.push(notInArray(invHistoricalData.location, locations)); } const query = db .select() .from(invHistoricalData) .where(and(...conditions)); // optional tryCatch or await as you had const { data, error } = (await tryCatch(query)) as any; if (error) { createLog( "error", "datamart", "datamart", `There was an error getting the planning info: ${JSON.stringify(error)}`, ); return { success: false, messsage: `There was an error getting the planning info`, data: error, }; } articles = data; console.log(articles.length); return { success: true, message: "PSI planning Data", data: articles, }; };