import sqlite from 'better-sqlite3' import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js' import type * as recordTypes from '../../types/recordTypes' interface AddLotOccupancyOccupantForm { lotOccupancyId: string | number lotOccupantTypeId: string | number occupantName: string occupantAddress1: string occupantAddress2: string occupantCity: string occupantProvince: string occupantPostalCode: string occupantPhoneNumber: string occupantEmailAddress: string occupantComment?: string } export function addLotOccupancyOccupant( lotOccupancyOccupantForm: AddLotOccupancyOccupantForm, requestSession: recordTypes.PartialSession, connectedDatabase?: sqlite.Database ): number { const database = connectedDatabase ?? sqlite(databasePath) let lotOccupantIndex = 0 const maxIndexResult = database .prepare( `select lotOccupantIndex from LotOccupancyOccupants where lotOccupancyId = ? order by lotOccupantIndex desc limit 1` ) .get(lotOccupancyOccupantForm.lotOccupancyId) if (maxIndexResult) { lotOccupantIndex = maxIndexResult.lotOccupantIndex + 1 } const rightNowMillis = Date.now() database .prepare( `insert into LotOccupancyOccupants ( lotOccupancyId, lotOccupantIndex, occupantName, occupantAddress1, occupantAddress2, occupantCity, occupantProvince, occupantPostalCode, occupantPhoneNumber, occupantEmailAddress, occupantComment, lotOccupantTypeId, recordCreate_userName, recordCreate_timeMillis, recordUpdate_userName, recordUpdate_timeMillis) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)` ) .run( lotOccupancyOccupantForm.lotOccupancyId, lotOccupantIndex, lotOccupancyOccupantForm.occupantName, lotOccupancyOccupantForm.occupantAddress1, lotOccupancyOccupantForm.occupantAddress2, lotOccupancyOccupantForm.occupantCity, lotOccupancyOccupantForm.occupantProvince, lotOccupancyOccupantForm.occupantPostalCode, lotOccupancyOccupantForm.occupantPhoneNumber, lotOccupancyOccupantForm.occupantEmailAddress, lotOccupancyOccupantForm.occupantComment ?? '', lotOccupancyOccupantForm.lotOccupantTypeId, requestSession.user!.userName, rightNowMillis, requestSession.user!.userName, rightNowMillis ) if (!connectedDatabase) { database.close() } return lotOccupantIndex } export default addLotOccupancyOccupant