UNPKG

@cityssm/worktech-api

Version:

Integrations with the WorkTech (Pearl) work order management system.

71 lines (58 loc) 1.99 kB
import { type mssql, connect } from '@cityssm/mssql-multi-pool' import type { BigIntString } from '../types.js' import { clearEquipmentCache } from './getEquipmentByEquipmentId.js' export interface UpdateEquipmentFields { equipmentDescription: string equipmentStatus: string equipmentClass: string serialNumber: string plate: string equipmentBrand: string equipmentModel: string equipmentModelYear: number departmentOwned: string location: string comments: string odometer: number } const columnNameMappings: Record<keyof UpdateEquipmentFields, string> = { equipmentDescription: 'DESC', equipmentStatus: 'Status', equipmentClass: 'ItemClass', serialNumber: 'Serial', plate: 'Plate', equipmentBrand: 'Brand', equipmentModel: 'Model', equipmentModelYear: 'Year', departmentOwned: 'Dept', location: 'Location', comments: 'Comments', odometer: 'Odom' } /** * Updates fields for a piece of equipment. * @param mssqlConfig - SQL Server configuration. * @param equipmentSystemId - The equipment system id. * @param fieldsToUpdate - The fields to update. * @returns True if the update was successful. */ export async function updateEquipmentFields( mssqlConfig: mssql.config, equipmentSystemId: BigIntString, fieldsToUpdate: Partial<UpdateEquipmentFields> ): Promise<boolean> { const pool = await connect(mssqlConfig) let request = pool.request() const updateList: string[] = [] for (const [fieldName, fieldValue] of Object.entries(fieldsToUpdate)) { const columnName = columnNameMappings[fieldName as keyof UpdateEquipmentFields] updateList.push(`[${columnName}] = @${fieldName}`) request = request.input(fieldName, fieldValue) } await request.input('equipmentSystemId', equipmentSystemId).query(`update WMITM set ${updateList.join(', ')} where ITMSysID = @equipmentSystemId`) clearEquipmentCache() return true }