UNPKG

@cityssm/worktech-api

Version:

Integrations with the WorkTech work order management system.

69 lines (61 loc) 2.18 kB
import { connect } from '@cityssm/mssql-multi-pool'; import NodeCache from 'node-cache'; import { cacheTimeToLiveSeconds } from '../../apiConfig.js'; const sql = `SELECT [ITMSysID] as equipmentSystemId, [Item_ID] as equipmentId, coalesce([DESC], '') as equipmentDescription, coalesce([ItemClass], '') as equipmentClass, coalesce([Brand], '') as equipmentBrand, coalesce([Model], '') as equipmentModel, [Year] as equipmentModelYear, coalesce([Serial], '') as serialNumber, coalesce([Plate], '') as plate, coalesce([FlType], '') as fuelType, coalesce([Status], '') as equipmentStatus, coalesce([Comments], '') as comments, coalesce([Location], '') as location, coalesce([Dept], '') as departmentOwned, coalesce([Division], '') as departmentManaged, coalesce([ExJob_ID], '') as expenseJobId, coalesce([ExActv_ID], '') as expenseActivityId, coalesce([ExObjCode], '') as expenseObjectCode, coalesce([RevJob_ID], '') as revenueJobId, coalesce([RevActv_ID], '') as revenueActivityId, coalesce([RevObjCode], '') as revenueObjectCode, [Odom] as odometer, [Hours] as jobCostHours, [RunHrs] as hourMeter FROM [WMITM] WITH (NOLOCK) where [Type] in ('Equipment')`; const cache = new NodeCache({ stdTTL: cacheTimeToLiveSeconds }); /** * Retrieves a piece of equipment. * @param mssqlConfig - SQL Server configuration. * @param equipmentId - The equipment id. * @returns - The equipment record, if available. */ export async function getEquipmentByEquipmentId(mssqlConfig, equipmentId) { let equipment = cache.get(equipmentId); if (equipment !== undefined) { return equipment; } const pool = await connect(mssqlConfig); const equipmentResult = (await pool .request() .input('equipmentId', equipmentId) .query(`${sql} and Item_ID = @equipmentId`)); if (equipmentResult.recordset.length === 0) { return undefined; } equipment = equipmentResult.recordset[0]; cache.set(equipmentId, equipment); return equipment; } /** * Clears the equipment cache. */ export function clearEquipmentCache() { cache.flushAll(); }