import sqlite from 'better-sqlite3' import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js' import type * as recordTypes from '../../types/recordTypes' export function getLotOccupancyFields( lotOccupancyId: number | string, connectedDatabase?: sqlite.Database ): recordTypes.LotOccupancyField[] { const database = connectedDatabase ?? sqlite(databasePath, { readonly: true }) const lotOccupancyFields: recordTypes.LotOccupancyField[] = database .prepare( `select o.lotOccupancyId, o.occupancyTypeFieldId, o.lotOccupancyFieldValue, f.occupancyTypeField, f.occupancyTypeFieldValues, f.isRequired, f.pattern, f.minimumLength, f.maximumLength, f.orderNumber, t.orderNumber as occupancyTypeOrderNumber from LotOccupancyFields o left join OccupancyTypeFields f on o.occupancyTypeFieldId = f.occupancyTypeFieldId left join OccupancyTypes t on f.occupancyTypeId = t.occupancyTypeId where o.recordDelete_timeMillis is null and o.lotOccupancyId = ? union select ? as lotOccupancyId, f.occupancyTypeFieldId, '' as lotOccupancyFieldValue, f.occupancyTypeField, f.occupancyTypeFieldValues, f.isRequired, f.pattern, f.minimumLength, f.maximumLength, f.orderNumber, t.orderNumber as occupancyTypeOrderNumber from OccupancyTypeFields f left join OccupancyTypes t on f.occupancyTypeId = t.occupancyTypeId where f.recordDelete_timeMillis is null and ( f.occupancyTypeId is null or f.occupancyTypeId in (select occupancyTypeId from LotOccupancies where lotOccupancyId = ?)) and f.occupancyTypeFieldId not in (select occupancyTypeFieldId from LotOccupancyFields where lotOccupancyId = ? and recordDelete_timeMillis is null) order by occupancyTypeOrderNumber, f.orderNumber, f.occupancyTypeField` ) .all(lotOccupancyId, lotOccupancyId, lotOccupancyId, lotOccupancyId) if (!connectedDatabase) { database.close() } return lotOccupancyFields } export default getLotOccupancyFields