74 lines
2.3 KiB
TypeScript
74 lines
2.3 KiB
TypeScript
import { eq, sql } from "drizzle-orm";
|
|
import { db } from "../../../../database/dbclient.js";
|
|
import { printerData } from "../../../../database/schema/printers.js";
|
|
import { delay } from "../../../globalUtils/delay.js";
|
|
import { tryCatch } from "../../../globalUtils/tryCatch.js";
|
|
import { getLots } from "../controller/lots/lots.js";
|
|
import { getPrinters } from "../controller/printers/getPrinters.js";
|
|
import { createLog } from "../../logger/logger.js";
|
|
|
|
export const assignedPrinters = async () => {
|
|
createLog("debug", "ocp", "ocp", "Lot assignment check");
|
|
const { data: l, error: lotError } = await tryCatch(getLots());
|
|
|
|
if (lotError) {
|
|
return {
|
|
success: false,
|
|
message: "Error getting lots",
|
|
data: lotError,
|
|
};
|
|
}
|
|
const { data: print, error: printerError } = await tryCatch(getPrinters());
|
|
|
|
if (printerError) {
|
|
return {
|
|
success: false,
|
|
message: "Error getting lots",
|
|
data: printerError,
|
|
};
|
|
}
|
|
|
|
const printers: any = print.data ?? [];
|
|
const lots: any = l.data.length === 0 ? [] : l.data;
|
|
|
|
for (let i = 0; i < printers.length; i++) {
|
|
// is the printer assinged in alplalabel online?
|
|
const assigned = lots?.filter(
|
|
(p: any) => p.printerID === parseInt(printers[i].humanReadableId)
|
|
);
|
|
|
|
let assignedPrinter = false;
|
|
// if true update the assigned field to true
|
|
if (assigned.length >= 1) {
|
|
assignedPrinter = true;
|
|
}
|
|
|
|
// update the printer to set its assignment
|
|
const { data: p, error: pe } = await tryCatch(
|
|
db
|
|
.update(printerData)
|
|
.set({ assigned: assignedPrinter, upd_date: sql`NOW()` })
|
|
.where(
|
|
eq(printerData.humanReadableId, printers[i].humanReadableId)
|
|
)
|
|
);
|
|
|
|
if (pe) {
|
|
createLog(
|
|
"error",
|
|
"ocp",
|
|
"ocp",
|
|
`${printers[i].name} encountered an error updating: ${pe}`
|
|
);
|
|
return {
|
|
success: false,
|
|
message: "Error while updating the prints.",
|
|
data: pe,
|
|
};
|
|
}
|
|
|
|
//delaying 250ms
|
|
await delay(250);
|
|
}
|
|
};
|