@cityssm/worktech-api
Version:
Integrations with the WorkTech work order management system.
69 lines (61 loc) • 2.18 kB
JavaScript
import { connect } from '@cityssm/mssql-multi-pool';
import NodeCache from 'node-cache';
import { cacheTimeToLiveSeconds } from '../../apiConfig.js';
const sql = `SELECT [ITMSysID] as equipmentSystemId,
[] as equipmentId,
coalesce([DESC], '') as equipmentDescription,
coalesce([ItemClass], '') as equipmentClass,
coalesce([Brand], '') as equipmentBrand,
coalesce([Model], '') as equipmentModel,
[] 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,
[] as odometer,
[] as jobCostHours,
[] 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();
}