import axios from "axios"; import { printerData } from "../../../../../database/schema/printers.js"; import { sql } from "drizzle-orm"; import { prodEndpointCreation } from "../../../../globalUtils/createUrl.js"; import { tryCatch } from "../../../../globalUtils/tryCatch.js"; import { lstAuth } from "../../../../index.js"; import { db } from "../../../../../database/dbclient.js"; import { createLog } from "../../../logger/logger.js"; export const updatePrinters = async () => { const currentTime = new Date(Date.now()); // get the printers from prod let url = await prodEndpointCreation( "/public/v1.0/Administration/Printers" ); const { data: prodPrinters, error: prodError } = await tryCatch( axios.get(url, { headers: { Authorization: `Basic ${lstAuth}`, "Content-Type": "application/json", }, }) ); if (prodError) { //console.log(prodError); return { success: false, message: "there was an error getting the printers.", data: prodError, }; } // do the printer update into our db const prodPrinterInfo = prodPrinters.data; for (let i = 0; i < prodPrinterInfo.length; i++) { const printerStuff: any = { humanReadableId: prodPrinterInfo[i].humanReadableId, name: prodPrinterInfo[i].name, ipAddress: prodPrinterInfo[i].ipAddress, port: prodPrinterInfo[i].port, remark: prodPrinterInfo[i].remark, }; const { data, error } = await tryCatch( db .insert(printerData) .values(printerStuff) .onConflictDoUpdate({ target: printerData.humanReadableId, set: { //humanReadableId: prodPrinterInfo[i].humanReadableId, name: prodPrinterInfo[i].name, ipAddress: prodPrinterInfo[i].ipAddress, port: prodPrinterInfo[i].port, remark: prodPrinterInfo[i].remark, upd_date: sql`NOW()`, }, }) ); if (error) { createLog( "error", "lst", "ocp", `${ prodPrinterInfo[i].name } encoutered and error adding/updating ${JSON.stringify(error)}` ); } createLog( "debug", "lst", "ocp", `${prodPrinterInfo[i].name} were just added/updated.` ); } return { success: true, message: "Printers were just added or updated." }; };