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;