sunrise-cms/helpers/lotOccupancyDB/getLotOccupancy.ts

53 lines
1.6 KiB
TypeScript

import {
dateIntegerToString
} from "@cityssm/expressjs-server-js/dateTimeFns.js";
import sqlite from "better-sqlite3";
import {
lotOccupancyDB as databasePath
} from "../../data/databasePaths.js";
import {
getLotOccupancyOccupants
} from "./getLotOccupancyOccupants.js";
import type * as recordTypes from "../../types/recordTypes";
export const getLotOccupancy = (lotOccupancyId: number | string): recordTypes.LotOccupancy => {
const database = sqlite(databasePath, {
readonly: true
});
database.function("userFn_dateIntegerToString", dateIntegerToString);
const lotOccupancy: recordTypes.LotOccupancy = database
.prepare("select o.lotOccupancyId," +
" o.occupancyTypeId, t.occupancyType," +
" o.lotId, l.lotName," +
" l.mapId, m.mapName," +
" o.occupancyStartDate, userFn_dateIntegerToString(o.occupancyStartDate) as occupancyStartDateString," +
" o.occupancyEndDate, userFn_dateIntegerToString(o.occupancyEndDate) as occupancyEndDateString" +
" 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.lotOccupancyOccupants = getLotOccupancyOccupants(lotOccupancyId, database);
}
database.close();
return lotOccupancy;
};
export default getLotOccupancy;