import sqlite from "better-sqlite3"; import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; import { dateIntegerToString } from "@cityssm/expressjs-server-js/dateTimeFns.js"; import { getLotOccupancyOccupants } from "./getLotOccupancyOccupants.js"; import { getLotOccupancyComments } from "./getLotOccupancyComments.js"; import { getLotOccupancyFields } from "./getLotOccupancyFields.js"; import { getLotOccupancyFees } from "./getLotOccupancyFees.js"; import { getLotOccupancyTransactions } from "./getLotOccupancyTransactions.js"; import { getWorkOrders } from "./getWorkOrders.js"; export function getLotOccupancy(lotOccupancyId, connectedDatabase) { const database = connectedDatabase || sqlite(databasePath, { readonly: true }); database.function("userFn_dateIntegerToString", dateIntegerToString); const lotOccupancy = database .prepare(`select o.lotOccupancyId, o.occupancyTypeId, t.occupancyType, o.lotId, l.lotName, l.lotTypeId, l.mapId, m.mapName, o.occupancyStartDate, userFn_dateIntegerToString(o.occupancyStartDate) as occupancyStartDateString, o.occupancyEndDate, userFn_dateIntegerToString(o.occupancyEndDate) as occupancyEndDateString, o.recordUpdate_timeMillis from LotOccupancies o left join OccupancyTypes t on o.occupancyTypeId = t.occupancyTypeId left join Lots l on o.lotId = l.lotId left join Maps m on l.mapId = m.mapId where o.recordDelete_timeMillis is null and o.lotOccupancyId = ?`) .get(lotOccupancyId); if (lotOccupancy) { lotOccupancy.lotOccupancyFields = getLotOccupancyFields(lotOccupancyId, database); lotOccupancy.lotOccupancyOccupants = getLotOccupancyOccupants(lotOccupancyId, database); lotOccupancy.lotOccupancyComments = getLotOccupancyComments(lotOccupancyId, database); lotOccupancy.lotOccupancyFees = getLotOccupancyFees(lotOccupancyId, database); lotOccupancy.lotOccupancyTransactions = getLotOccupancyTransactions(lotOccupancyId, database); lotOccupancy.workOrders = getWorkOrders({ lotOccupancyId }, { limit: -1, offset: 0 }, database).workOrders; } if (!connectedDatabase) { database.close(); } return lotOccupancy; } export default getLotOccupancy;