diff --git a/helpers/lotOccupancyDB/addOccupancyTypeField.d.ts b/helpers/lotOccupancyDB/addOccupancyTypeField.d.ts index 595fdde3..1b320694 100644 --- a/helpers/lotOccupancyDB/addOccupancyTypeField.d.ts +++ b/helpers/lotOccupancyDB/addOccupancyTypeField.d.ts @@ -1,4 +1,4 @@ -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes'; interface AddOccupancyTypeFieldForm { occupancyTypeId?: string | number; occupancyTypeField: string; diff --git a/helpers/lotOccupancyDB/addOccupancyTypeField.js b/helpers/lotOccupancyDB/addOccupancyTypeField.js index 13d716eb..5f16ab2f 100644 --- a/helpers/lotOccupancyDB/addOccupancyTypeField.js +++ b/helpers/lotOccupancyDB/addOccupancyTypeField.js @@ -1,6 +1,6 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; -import { clearCacheByTableName } from "../functions.cache.js"; +import sqlite from 'better-sqlite3'; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'; +import { clearCacheByTableName } from '../functions.cache.js'; export function addOccupancyTypeField(occupancyTypeFieldForm, requestSession) { const database = sqlite(databasePath); const rightNowMillis = Date.now(); @@ -13,9 +13,9 @@ export function addOccupancyTypeField(occupancyTypeFieldForm, requestSession) { recordCreate_userName, recordCreate_timeMillis, recordUpdate_userName, recordUpdate_timeMillis) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`) - .run(occupancyTypeFieldForm.occupancyTypeId || undefined, occupancyTypeFieldForm.occupancyTypeField, occupancyTypeFieldForm.occupancyTypeFieldValues || "", occupancyTypeFieldForm.isRequired ? 1 : 0, occupancyTypeFieldForm.pattern || "", occupancyTypeFieldForm.minimumLength || 0, occupancyTypeFieldForm.maximumLength || 100, occupancyTypeFieldForm.orderNumber || -1, requestSession.user.userName, rightNowMillis, requestSession.user.userName, rightNowMillis); + .run(occupancyTypeFieldForm.occupancyTypeId ?? undefined, occupancyTypeFieldForm.occupancyTypeField, occupancyTypeFieldForm.occupancyTypeFieldValues ?? '', occupancyTypeFieldForm.isRequired === '' ? 0 : 1, occupancyTypeFieldForm.pattern ?? '', occupancyTypeFieldForm.minimumLength ?? 0, occupancyTypeFieldForm.maximumLength ?? 100, occupancyTypeFieldForm.orderNumber ?? -1, requestSession.user.userName, rightNowMillis, requestSession.user.userName, rightNowMillis); database.close(); - clearCacheByTableName("OccupancyTypeFields"); + clearCacheByTableName('OccupancyTypeFields'); return result.lastInsertRowid; } export default addOccupancyTypeField; diff --git a/helpers/lotOccupancyDB/addOccupancyTypeField.ts b/helpers/lotOccupancyDB/addOccupancyTypeField.ts index 7be647e3..56b59e33 100644 --- a/helpers/lotOccupancyDB/addOccupancyTypeField.ts +++ b/helpers/lotOccupancyDB/addOccupancyTypeField.ts @@ -1,32 +1,32 @@ -import sqlite from "better-sqlite3"; +import sqlite from 'better-sqlite3' -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js' -import type * as recordTypes from "../../types/recordTypes"; -import { clearCacheByTableName } from "../functions.cache.js"; +import type * as recordTypes from '../../types/recordTypes' +import { clearCacheByTableName } from '../functions.cache.js' interface AddOccupancyTypeFieldForm { - occupancyTypeId?: string | number; - occupancyTypeField: string; - occupancyTypeFieldValues?: string; - isRequired?: string; - pattern?: string; - minimumLength: string | number; - maximumLength: string | number; - orderNumber?: number; + occupancyTypeId?: string | number + occupancyTypeField: string + occupancyTypeFieldValues?: string + isRequired?: string + pattern?: string + minimumLength: string | number + maximumLength: string | number + orderNumber?: number } export function addOccupancyTypeField( - occupancyTypeFieldForm: AddOccupancyTypeFieldForm, - requestSession: recordTypes.PartialSession + occupancyTypeFieldForm: AddOccupancyTypeFieldForm, + requestSession: recordTypes.PartialSession ): number { - const database = sqlite(databasePath); + const database = sqlite(databasePath) - const rightNowMillis = Date.now(); + const rightNowMillis = Date.now() - const result = database - .prepare( - `insert into OccupancyTypeFields ( + const result = database + .prepare( + `insert into OccupancyTypeFields ( occupancyTypeId, occupancyTypeField, occupancyTypeFieldValues, isRequired, pattern, minimumLength, maximumLength, @@ -34,27 +34,27 @@ export function addOccupancyTypeField( recordCreate_userName, recordCreate_timeMillis, recordUpdate_userName, recordUpdate_timeMillis) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)` - ) - .run( - occupancyTypeFieldForm.occupancyTypeId || undefined, - occupancyTypeFieldForm.occupancyTypeField, - occupancyTypeFieldForm.occupancyTypeFieldValues || "", - occupancyTypeFieldForm.isRequired ? 1 : 0, - occupancyTypeFieldForm.pattern || "", - occupancyTypeFieldForm.minimumLength || 0, - occupancyTypeFieldForm.maximumLength || 100, - occupancyTypeFieldForm.orderNumber || -1, - requestSession.user.userName, - rightNowMillis, - requestSession.user.userName, - rightNowMillis - ); + ) + .run( + occupancyTypeFieldForm.occupancyTypeId ?? undefined, + occupancyTypeFieldForm.occupancyTypeField, + occupancyTypeFieldForm.occupancyTypeFieldValues ?? '', + occupancyTypeFieldForm.isRequired === '' ? 0 : 1, + occupancyTypeFieldForm.pattern ?? '', + occupancyTypeFieldForm.minimumLength ?? 0, + occupancyTypeFieldForm.maximumLength ?? 100, + occupancyTypeFieldForm.orderNumber ?? -1, + requestSession.user!.userName, + rightNowMillis, + requestSession.user!.userName, + rightNowMillis + ) - database.close(); + database.close() - clearCacheByTableName("OccupancyTypeFields"); + clearCacheByTableName('OccupancyTypeFields') - return result.lastInsertRowid as number; + return result.lastInsertRowid as number } -export default addOccupancyTypeField; +export default addOccupancyTypeField diff --git a/helpers/lotOccupancyDB/addOccupancyTypePrint.d.ts b/helpers/lotOccupancyDB/addOccupancyTypePrint.d.ts index 29a3e556..933a470b 100644 --- a/helpers/lotOccupancyDB/addOccupancyTypePrint.d.ts +++ b/helpers/lotOccupancyDB/addOccupancyTypePrint.d.ts @@ -1,4 +1,4 @@ -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes'; interface OccupancyTypePrintForm { occupancyTypeId: string | number; printEJS: string; diff --git a/helpers/lotOccupancyDB/addOccupancyTypePrint.js b/helpers/lotOccupancyDB/addOccupancyTypePrint.js index 64d184ea..c6c32083 100644 --- a/helpers/lotOccupancyDB/addOccupancyTypePrint.js +++ b/helpers/lotOccupancyDB/addOccupancyTypePrint.js @@ -1,6 +1,6 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; -import { clearCacheByTableName } from "../functions.cache.js"; +import sqlite from 'better-sqlite3'; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'; +import { clearCacheByTableName } from '../functions.cache.js'; export function addOccupancyTypePrint(occupancyTypePrintForm, requestSession) { const database = sqlite(databasePath); const rightNowMillis = Date.now(); @@ -20,10 +20,10 @@ export function addOccupancyTypePrint(occupancyTypePrintForm, requestSession) { recordCreate_userName, recordCreate_timeMillis, recordUpdate_userName, recordUpdate_timeMillis) values (?, ?, ?, ?, ?, ?, ?)`) - .run(occupancyTypePrintForm.occupancyTypeId, occupancyTypePrintForm.printEJS, occupancyTypePrintForm.orderNumber || -1, requestSession.user.userName, rightNowMillis, requestSession.user.userName, rightNowMillis); + .run(occupancyTypePrintForm.occupancyTypeId, occupancyTypePrintForm.printEJS, occupancyTypePrintForm.orderNumber ?? -1, requestSession.user.userName, rightNowMillis, requestSession.user.userName, rightNowMillis); } database.close(); - clearCacheByTableName("OccupancyTypePrints"); + clearCacheByTableName('OccupancyTypePrints'); return result.changes > 0; } export default addOccupancyTypePrint; diff --git a/helpers/lotOccupancyDB/addOccupancyTypePrint.ts b/helpers/lotOccupancyDB/addOccupancyTypePrint.ts index 706477c9..06094dc0 100644 --- a/helpers/lotOccupancyDB/addOccupancyTypePrint.ts +++ b/helpers/lotOccupancyDB/addOccupancyTypePrint.ts @@ -1,67 +1,67 @@ -import sqlite from "better-sqlite3"; +import sqlite from 'better-sqlite3' -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js' -import { clearCacheByTableName } from "../functions.cache.js"; +import { clearCacheByTableName } from '../functions.cache.js' -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes' interface OccupancyTypePrintForm { - occupancyTypeId: string | number; - printEJS: string; - orderNumber?: number; + occupancyTypeId: string | number + printEJS: string + orderNumber?: number } export function addOccupancyTypePrint( - occupancyTypePrintForm: OccupancyTypePrintForm, - requestSession: recordTypes.PartialSession + occupancyTypePrintForm: OccupancyTypePrintForm, + requestSession: recordTypes.PartialSession ): boolean { - const database = sqlite(databasePath); + const database = sqlite(databasePath) - const rightNowMillis = Date.now(); + const rightNowMillis = Date.now() - let result = database - .prepare( - `update OccupancyTypePrints + let result = database + .prepare( + `update OccupancyTypePrints set recordUpdate_userName = ?, recordUpdate_timeMillis = ?, recordDelete_userName = null, recordDelete_timeMillis = null where occupancyTypeId = ? and printEJS = ?` - ) - .run( - requestSession.user.userName, - rightNowMillis, - occupancyTypePrintForm.occupancyTypeId, - occupancyTypePrintForm.printEJS - ); + ) + .run( + requestSession.user!.userName, + rightNowMillis, + occupancyTypePrintForm.occupancyTypeId, + occupancyTypePrintForm.printEJS + ) - if (result.changes === 0) { - result = database - .prepare( - `insert into OccupancyTypePrints ( + if (result.changes === 0) { + result = database + .prepare( + `insert into OccupancyTypePrints ( occupancyTypeId, printEJS, orderNumber, recordCreate_userName, recordCreate_timeMillis, recordUpdate_userName, recordUpdate_timeMillis) values (?, ?, ?, ?, ?, ?, ?)` - ) - .run( - occupancyTypePrintForm.occupancyTypeId, - occupancyTypePrintForm.printEJS, - occupancyTypePrintForm.orderNumber || -1, - requestSession.user.userName, - rightNowMillis, - requestSession.user.userName, - rightNowMillis - ); - } + ) + .run( + occupancyTypePrintForm.occupancyTypeId, + occupancyTypePrintForm.printEJS, + occupancyTypePrintForm.orderNumber ?? -1, + requestSession.user!.userName, + rightNowMillis, + requestSession.user!.userName, + rightNowMillis + ) + } - database.close(); + database.close() - clearCacheByTableName("OccupancyTypePrints"); + clearCacheByTableName('OccupancyTypePrints') - return result.changes > 0; + return result.changes > 0 } -export default addOccupancyTypePrint; +export default addOccupancyTypePrint diff --git a/helpers/lotOccupancyDB/addOrUpdateLotField.d.ts b/helpers/lotOccupancyDB/addOrUpdateLotField.d.ts index fc7af740..350a62ed 100644 --- a/helpers/lotOccupancyDB/addOrUpdateLotField.d.ts +++ b/helpers/lotOccupancyDB/addOrUpdateLotField.d.ts @@ -1,5 +1,5 @@ -import sqlite from "better-sqlite3"; -import type * as recordTypes from "../../types/recordTypes"; +import sqlite from 'better-sqlite3'; +import type * as recordTypes from '../../types/recordTypes'; interface LotFieldForm { lotId: string | number; lotTypeFieldId: string | number; diff --git a/helpers/lotOccupancyDB/addOrUpdateLotField.js b/helpers/lotOccupancyDB/addOrUpdateLotField.js index 7ff1f900..2616df0b 100644 --- a/helpers/lotOccupancyDB/addOrUpdateLotField.js +++ b/helpers/lotOccupancyDB/addOrUpdateLotField.js @@ -1,17 +1,17 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import sqlite from 'better-sqlite3'; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'; export function addOrUpdateLotField(lotFieldForm, requestSession, connectedDatabase) { - const database = connectedDatabase || sqlite(databasePath); + const database = connectedDatabase ?? sqlite(databasePath); const rightNowMillis = Date.now(); let result = database .prepare(`update LotFields - set lotFieldValue = ?, - recordUpdate_userName = ?, - recordUpdate_timeMillis = ?, - recordDelete_userName = null, - recordDelete_timeMillis = null - where lotId = ? - and lotTypeFieldId = ?`) + set lotFieldValue = ?, + recordUpdate_userName = ?, + recordUpdate_timeMillis = ?, + recordDelete_userName = null, + recordDelete_timeMillis = null + where lotId = ? + and lotTypeFieldId = ?`) .run(lotFieldForm.lotFieldValue, requestSession.user.userName, rightNowMillis, lotFieldForm.lotId, lotFieldForm.lotTypeFieldId); if (result.changes === 0) { result = database diff --git a/helpers/lotOccupancyDB/addOrUpdateLotField.ts b/helpers/lotOccupancyDB/addOrUpdateLotField.ts index dbfdc9b1..dd74ca3d 100644 --- a/helpers/lotOccupancyDB/addOrUpdateLotField.ts +++ b/helpers/lotOccupancyDB/addOrUpdateLotField.ts @@ -1,68 +1,68 @@ -import sqlite from "better-sqlite3"; +import sqlite from 'better-sqlite3' -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js' -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes' interface LotFieldForm { - lotId: string | number; - lotTypeFieldId: string | number; - lotFieldValue: string; + lotId: string | number + lotTypeFieldId: string | number + lotFieldValue: string } export function addOrUpdateLotField( - lotFieldForm: LotFieldForm, - requestSession: recordTypes.PartialSession, - connectedDatabase?: sqlite.Database + lotFieldForm: LotFieldForm, + requestSession: recordTypes.PartialSession, + connectedDatabase?: sqlite.Database ): boolean { - const database = connectedDatabase || sqlite(databasePath); + const database = connectedDatabase ?? sqlite(databasePath) - const rightNowMillis = Date.now(); + const rightNowMillis = Date.now() - let result = database - .prepare( - `update LotFields - set lotFieldValue = ?, - recordUpdate_userName = ?, - recordUpdate_timeMillis = ?, - recordDelete_userName = null, - recordDelete_timeMillis = null - where lotId = ? - and lotTypeFieldId = ?` - ) - .run( - lotFieldForm.lotFieldValue, - requestSession.user.userName, - rightNowMillis, - lotFieldForm.lotId, - lotFieldForm.lotTypeFieldId - ); + let result = database + .prepare( + `update LotFields + set lotFieldValue = ?, + recordUpdate_userName = ?, + recordUpdate_timeMillis = ?, + recordDelete_userName = null, + recordDelete_timeMillis = null + where lotId = ? + and lotTypeFieldId = ?` + ) + .run( + lotFieldForm.lotFieldValue, + requestSession.user!.userName, + rightNowMillis, + lotFieldForm.lotId, + lotFieldForm.lotTypeFieldId + ) - if (result.changes === 0) { - result = database - .prepare( - `insert into LotFields ( + if (result.changes === 0) { + result = database + .prepare( + `insert into LotFields ( lotId, lotTypeFieldId, lotFieldValue, recordCreate_userName, recordCreate_timeMillis, recordUpdate_userName, recordUpdate_timeMillis) values (?, ?, ?, ?, ?, ?, ?)` - ) - .run( - lotFieldForm.lotId, - lotFieldForm.lotTypeFieldId, - lotFieldForm.lotFieldValue, - requestSession.user.userName, - rightNowMillis, - requestSession.user.userName, - rightNowMillis - ); - } + ) + .run( + lotFieldForm.lotId, + lotFieldForm.lotTypeFieldId, + lotFieldForm.lotFieldValue, + requestSession.user!.userName, + rightNowMillis, + requestSession.user!.userName, + rightNowMillis + ) + } - if (!connectedDatabase) { - database.close(); - } + if (!connectedDatabase) { + database.close() + } - return result.changes > 0; + return result.changes > 0 } -export default addOrUpdateLotField; +export default addOrUpdateLotField diff --git a/helpers/lotOccupancyDB/addOrUpdateLotOccupancyField.d.ts b/helpers/lotOccupancyDB/addOrUpdateLotOccupancyField.d.ts index e5c85cda..89d26d1e 100644 --- a/helpers/lotOccupancyDB/addOrUpdateLotOccupancyField.d.ts +++ b/helpers/lotOccupancyDB/addOrUpdateLotOccupancyField.d.ts @@ -1,5 +1,5 @@ -import sqlite from "better-sqlite3"; -import type * as recordTypes from "../../types/recordTypes"; +import sqlite from 'better-sqlite3'; +import type * as recordTypes from '../../types/recordTypes'; interface LotOccupancyFieldForm { lotOccupancyId: string | number; occupancyTypeFieldId: string | number; diff --git a/helpers/lotOccupancyDB/addOrUpdateLotOccupancyField.js b/helpers/lotOccupancyDB/addOrUpdateLotOccupancyField.js index 315a1538..31b358b5 100644 --- a/helpers/lotOccupancyDB/addOrUpdateLotOccupancyField.js +++ b/helpers/lotOccupancyDB/addOrUpdateLotOccupancyField.js @@ -1,25 +1,25 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import sqlite from 'better-sqlite3'; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'; export function addOrUpdateLotOccupancyField(lotOccupancyFieldForm, requestSession, connectedDatabase) { - const database = connectedDatabase || sqlite(databasePath); + const database = connectedDatabase ?? sqlite(databasePath); const rightNowMillis = Date.now(); let result = database .prepare(`update LotOccupancyFields - set lotOccupancyFieldValue = ?, - recordUpdate_userName = ?, - recordUpdate_timeMillis = ?, - recordDelete_userName = null, - recordDelete_timeMillis = null - where lotOccupancyId = ? - and occupancyTypeFieldId = ?`) + set lotOccupancyFieldValue = ?, + recordUpdate_userName = ?, + recordUpdate_timeMillis = ?, + recordDelete_userName = null, + recordDelete_timeMillis = null + where lotOccupancyId = ? + and occupancyTypeFieldId = ?`) .run(lotOccupancyFieldForm.lotOccupancyFieldValue, requestSession.user.userName, rightNowMillis, lotOccupancyFieldForm.lotOccupancyId, lotOccupancyFieldForm.occupancyTypeFieldId); if (result.changes === 0) { result = database .prepare(`insert into LotOccupancyFields ( - lotOccupancyId, occupancyTypeFieldId, lotOccupancyFieldValue, - recordCreate_userName, recordCreate_timeMillis, - recordUpdate_userName, recordUpdate_timeMillis) - values (?, ?, ?, ?, ?, ?, ?)`) + lotOccupancyId, occupancyTypeFieldId, lotOccupancyFieldValue, + recordCreate_userName, recordCreate_timeMillis, + recordUpdate_userName, recordUpdate_timeMillis) + values (?, ?, ?, ?, ?, ?, ?)`) .run(lotOccupancyFieldForm.lotOccupancyId, lotOccupancyFieldForm.occupancyTypeFieldId, lotOccupancyFieldForm.lotOccupancyFieldValue, requestSession.user.userName, rightNowMillis, requestSession.user.userName, rightNowMillis); } if (!connectedDatabase) { diff --git a/helpers/lotOccupancyDB/addOrUpdateLotOccupancyField.ts b/helpers/lotOccupancyDB/addOrUpdateLotOccupancyField.ts index 7a4eabbf..1a773c48 100644 --- a/helpers/lotOccupancyDB/addOrUpdateLotOccupancyField.ts +++ b/helpers/lotOccupancyDB/addOrUpdateLotOccupancyField.ts @@ -1,68 +1,68 @@ -import sqlite from "better-sqlite3"; +import sqlite from 'better-sqlite3' -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js' -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes' interface LotOccupancyFieldForm { - lotOccupancyId: string | number; - occupancyTypeFieldId: string | number; - lotOccupancyFieldValue: string; + lotOccupancyId: string | number + occupancyTypeFieldId: string | number + lotOccupancyFieldValue: string } export function addOrUpdateLotOccupancyField( - lotOccupancyFieldForm: LotOccupancyFieldForm, - requestSession: recordTypes.PartialSession, - connectedDatabase?: sqlite.Database + lotOccupancyFieldForm: LotOccupancyFieldForm, + requestSession: recordTypes.PartialSession, + connectedDatabase?: sqlite.Database ): boolean { - const database = connectedDatabase || sqlite(databasePath); + const database = connectedDatabase ?? sqlite(databasePath) - const rightNowMillis = Date.now(); + const rightNowMillis = Date.now() - let result = database - .prepare( - `update LotOccupancyFields - set lotOccupancyFieldValue = ?, - recordUpdate_userName = ?, - recordUpdate_timeMillis = ?, - recordDelete_userName = null, - recordDelete_timeMillis = null - where lotOccupancyId = ? - and occupancyTypeFieldId = ?` - ) - .run( - lotOccupancyFieldForm.lotOccupancyFieldValue, - requestSession.user.userName, - rightNowMillis, - lotOccupancyFieldForm.lotOccupancyId, - lotOccupancyFieldForm.occupancyTypeFieldId - ); + let result = database + .prepare( + `update LotOccupancyFields + set lotOccupancyFieldValue = ?, + recordUpdate_userName = ?, + recordUpdate_timeMillis = ?, + recordDelete_userName = null, + recordDelete_timeMillis = null + where lotOccupancyId = ? + and occupancyTypeFieldId = ?` + ) + .run( + lotOccupancyFieldForm.lotOccupancyFieldValue, + requestSession.user!.userName, + rightNowMillis, + lotOccupancyFieldForm.lotOccupancyId, + lotOccupancyFieldForm.occupancyTypeFieldId + ) - if (result.changes === 0) { - result = database - .prepare( - `insert into LotOccupancyFields ( - lotOccupancyId, occupancyTypeFieldId, lotOccupancyFieldValue, - recordCreate_userName, recordCreate_timeMillis, - recordUpdate_userName, recordUpdate_timeMillis) - values (?, ?, ?, ?, ?, ?, ?)` - ) - .run( - lotOccupancyFieldForm.lotOccupancyId, - lotOccupancyFieldForm.occupancyTypeFieldId, - lotOccupancyFieldForm.lotOccupancyFieldValue, - requestSession.user.userName, - rightNowMillis, - requestSession.user.userName, - rightNowMillis - ); - } + if (result.changes === 0) { + result = database + .prepare( + `insert into LotOccupancyFields ( + lotOccupancyId, occupancyTypeFieldId, lotOccupancyFieldValue, + recordCreate_userName, recordCreate_timeMillis, + recordUpdate_userName, recordUpdate_timeMillis) + values (?, ?, ?, ?, ?, ?, ?)` + ) + .run( + lotOccupancyFieldForm.lotOccupancyId, + lotOccupancyFieldForm.occupancyTypeFieldId, + lotOccupancyFieldForm.lotOccupancyFieldValue, + requestSession.user!.userName, + rightNowMillis, + requestSession.user!.userName, + rightNowMillis + ) + } - if (!connectedDatabase) { - database.close(); - } + if (!connectedDatabase) { + database.close() + } - return result.changes > 0; + return result.changes > 0 } -export default addOrUpdateLotOccupancyField; +export default addOrUpdateLotOccupancyField diff --git a/helpers/lotOccupancyDB/addRecord.d.ts b/helpers/lotOccupancyDB/addRecord.d.ts index 833e8f2b..cea01986 100644 --- a/helpers/lotOccupancyDB/addRecord.d.ts +++ b/helpers/lotOccupancyDB/addRecord.d.ts @@ -1,4 +1,4 @@ -import type * as recordTypes from "../../types/recordTypes"; -declare type RecordTable = "FeeCategories" | "LotStatuses" | "LotTypes" | "OccupancyTypes" | "WorkOrderMilestoneTypes" | "WorkOrderTypes"; +import type * as recordTypes from '../../types/recordTypes'; +declare type RecordTable = 'FeeCategories' | 'LotStatuses' | 'LotTypes' | 'OccupancyTypes' | 'WorkOrderMilestoneTypes' | 'WorkOrderTypes'; export declare function addRecord(recordTable: RecordTable, recordName: string, orderNumber: number, requestSession: recordTypes.PartialSession): number; export {}; diff --git a/helpers/lotOccupancyDB/addRecord.js b/helpers/lotOccupancyDB/addRecord.js index 5e4d4cf7..d3e8b7d6 100644 --- a/helpers/lotOccupancyDB/addRecord.js +++ b/helpers/lotOccupancyDB/addRecord.js @@ -1,22 +1,22 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; -import { clearCacheByTableName } from "../functions.cache.js"; +import sqlite from 'better-sqlite3'; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'; +import { clearCacheByTableName } from '../functions.cache.js'; const recordNameColumns = new Map(); -recordNameColumns.set("FeeCategories", "feeCategory"); -recordNameColumns.set("LotStatuses", "lotStatus"); -recordNameColumns.set("LotTypes", "lotType"); -recordNameColumns.set("OccupancyTypes", "occupancyType"); -recordNameColumns.set("WorkOrderMilestoneTypes", "workOrderMilestoneType"); -recordNameColumns.set("WorkOrderTypes", "workOrderType"); +recordNameColumns.set('FeeCategories', 'feeCategory'); +recordNameColumns.set('LotStatuses', 'lotStatus'); +recordNameColumns.set('LotTypes', 'lotType'); +recordNameColumns.set('OccupancyTypes', 'occupancyType'); +recordNameColumns.set('WorkOrderMilestoneTypes', 'workOrderMilestoneType'); +recordNameColumns.set('WorkOrderTypes', 'workOrderType'); export function addRecord(recordTable, recordName, orderNumber, requestSession) { const database = sqlite(databasePath); const rightNowMillis = Date.now(); const result = database .prepare(`insert into ${recordTable} ( - ${recordNameColumns.get(recordTable)}, orderNumber, - recordCreate_userName, recordCreate_timeMillis, - recordUpdate_userName, recordUpdate_timeMillis) - values (?, ?, ?, ?, ?, ?)`) + ${recordNameColumns.get(recordTable)}, orderNumber, + recordCreate_userName, recordCreate_timeMillis, + recordUpdate_userName, recordUpdate_timeMillis) + values (?, ?, ?, ?, ?, ?)`) .run(recordName, orderNumber, requestSession.user.userName, rightNowMillis, requestSession.user.userName, rightNowMillis); database.close(); clearCacheByTableName(recordTable); diff --git a/helpers/lotOccupancyDB/addRecord.ts b/helpers/lotOccupancyDB/addRecord.ts index 7f2ce466..330adfc2 100644 --- a/helpers/lotOccupancyDB/addRecord.ts +++ b/helpers/lotOccupancyDB/addRecord.ts @@ -1,56 +1,56 @@ -import sqlite from "better-sqlite3"; +import sqlite from 'better-sqlite3' -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js' -import type * as recordTypes from "../../types/recordTypes"; -import { clearCacheByTableName } from "../functions.cache.js"; +import type * as recordTypes from '../../types/recordTypes' +import { clearCacheByTableName } from '../functions.cache.js' type RecordTable = - | "FeeCategories" - | "LotStatuses" - | "LotTypes" - | "OccupancyTypes" - | "WorkOrderMilestoneTypes" - | "WorkOrderTypes"; + | 'FeeCategories' + | 'LotStatuses' + | 'LotTypes' + | 'OccupancyTypes' + | 'WorkOrderMilestoneTypes' + | 'WorkOrderTypes' -const recordNameColumns: Map = new Map(); -recordNameColumns.set("FeeCategories", "feeCategory"); -recordNameColumns.set("LotStatuses", "lotStatus"); -recordNameColumns.set("LotTypes", "lotType"); -recordNameColumns.set("OccupancyTypes", "occupancyType"); -recordNameColumns.set("WorkOrderMilestoneTypes", "workOrderMilestoneType"); -recordNameColumns.set("WorkOrderTypes", "workOrderType"); +const recordNameColumns: Map = new Map() +recordNameColumns.set('FeeCategories', 'feeCategory') +recordNameColumns.set('LotStatuses', 'lotStatus') +recordNameColumns.set('LotTypes', 'lotType') +recordNameColumns.set('OccupancyTypes', 'occupancyType') +recordNameColumns.set('WorkOrderMilestoneTypes', 'workOrderMilestoneType') +recordNameColumns.set('WorkOrderTypes', 'workOrderType') export function addRecord( - recordTable: RecordTable, - recordName: string, - orderNumber: number, - requestSession: recordTypes.PartialSession + recordTable: RecordTable, + recordName: string, + orderNumber: number, + requestSession: recordTypes.PartialSession ): number { - const database = sqlite(databasePath); + const database = sqlite(databasePath) - const rightNowMillis = Date.now(); + const rightNowMillis = Date.now() - const result = database - .prepare( - `insert into ${recordTable} ( - ${recordNameColumns.get(recordTable)}, orderNumber, - recordCreate_userName, recordCreate_timeMillis, - recordUpdate_userName, recordUpdate_timeMillis) - values (?, ?, ?, ?, ?, ?)` - ) - .run( - recordName, - orderNumber, - requestSession.user.userName, - rightNowMillis, - requestSession.user.userName, - rightNowMillis - ); + const result = database + .prepare( + `insert into ${recordTable} ( + ${recordNameColumns.get(recordTable)!}, orderNumber, + recordCreate_userName, recordCreate_timeMillis, + recordUpdate_userName, recordUpdate_timeMillis) + values (?, ?, ?, ?, ?, ?)` + ) + .run( + recordName, + orderNumber, + requestSession.user!.userName, + rightNowMillis, + requestSession.user!.userName, + rightNowMillis + ) - database.close(); + database.close() - clearCacheByTableName(recordTable); + clearCacheByTableName(recordTable) - return result.lastInsertRowid as number; + return result.lastInsertRowid as number } diff --git a/helpers/lotOccupancyDB/addWorkOrder.d.ts b/helpers/lotOccupancyDB/addWorkOrder.d.ts index 6218ad06..e4231fa1 100644 --- a/helpers/lotOccupancyDB/addWorkOrder.d.ts +++ b/helpers/lotOccupancyDB/addWorkOrder.d.ts @@ -1,4 +1,4 @@ -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes'; interface AddWorkOrderForm { workOrderTypeId: number | string; workOrderNumber?: string; diff --git a/helpers/lotOccupancyDB/addWorkOrder.js b/helpers/lotOccupancyDB/addWorkOrder.js index 168b0e6d..28e77064 100644 --- a/helpers/lotOccupancyDB/addWorkOrder.js +++ b/helpers/lotOccupancyDB/addWorkOrder.js @@ -1,8 +1,8 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; -import { getNextWorkOrderNumber } from "./getNextWorkOrderNumber.js"; -import { addWorkOrderLotOccupancy } from "./addWorkOrderLotOccupancy.js"; -import { dateStringToInteger, dateToInteger } from "@cityssm/expressjs-server-js/dateTimeFns.js"; +import sqlite from 'better-sqlite3'; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'; +import { getNextWorkOrderNumber } from './getNextWorkOrderNumber.js'; +import { addWorkOrderLotOccupancy } from './addWorkOrderLotOccupancy.js'; +import { dateStringToInteger, dateToInteger } from '@cityssm/expressjs-server-js/dateTimeFns.js'; export function addWorkOrder(workOrderForm, requestSession) { const database = sqlite(databasePath); const rightNow = new Date(); diff --git a/helpers/lotOccupancyDB/addWorkOrder.ts b/helpers/lotOccupancyDB/addWorkOrder.ts index 563ae75c..1625332c 100644 --- a/helpers/lotOccupancyDB/addWorkOrder.ts +++ b/helpers/lotOccupancyDB/addWorkOrder.ts @@ -1,78 +1,81 @@ -import sqlite from "better-sqlite3"; +import sqlite from 'better-sqlite3' -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js' -import { getNextWorkOrderNumber } from "./getNextWorkOrderNumber.js"; -import { addWorkOrderLotOccupancy } from "./addWorkOrderLotOccupancy.js"; +import { getNextWorkOrderNumber } from './getNextWorkOrderNumber.js' +import { addWorkOrderLotOccupancy } from './addWorkOrderLotOccupancy.js' -import { dateStringToInteger, dateToInteger } from "@cityssm/expressjs-server-js/dateTimeFns.js"; +import { + dateStringToInteger, + dateToInteger +} from '@cityssm/expressjs-server-js/dateTimeFns.js' -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes' interface AddWorkOrderForm { - workOrderTypeId: number | string; - workOrderNumber?: string; - workOrderDescription: string; - workOrderOpenDateString?: string; - workOrderCloseDateString?: string; - lotOccupancyId?: string; + workOrderTypeId: number | string + workOrderNumber?: string + workOrderDescription: string + workOrderOpenDateString?: string + workOrderCloseDateString?: string + lotOccupancyId?: string } export function addWorkOrder( - workOrderForm: AddWorkOrderForm, - requestSession: recordTypes.PartialSession + workOrderForm: AddWorkOrderForm, + requestSession: recordTypes.PartialSession ): number { - const database = sqlite(databasePath); + const database = sqlite(databasePath) - const rightNow = new Date(); + const rightNow = new Date() - let workOrderNumber = workOrderForm.workOrderNumber; + let workOrderNumber = workOrderForm.workOrderNumber - if (!workOrderNumber) { - workOrderNumber = getNextWorkOrderNumber(database); - } + if (!workOrderNumber) { + workOrderNumber = getNextWorkOrderNumber(database) + } - const result = database - .prepare( - `insert into WorkOrders ( + const result = database + .prepare( + `insert into WorkOrders ( workOrderTypeId, workOrderNumber, workOrderDescription, workOrderOpenDate, workOrderCloseDate, recordCreate_userName, recordCreate_timeMillis, recordUpdate_userName, recordUpdate_timeMillis) values (?, ?, ?, ?, ?, ?, ?, ?, ?)` - ) - .run( - workOrderForm.workOrderTypeId, - workOrderNumber, - workOrderForm.workOrderDescription, - workOrderForm.workOrderOpenDateString - ? dateStringToInteger(workOrderForm.workOrderOpenDateString) - : dateToInteger(rightNow), - workOrderForm.workOrderCloseDateString - ? dateStringToInteger(workOrderForm.workOrderCloseDateString) - : undefined, - requestSession.user.userName, - rightNow.getTime(), - requestSession.user.userName, - rightNow.getTime() - ); + ) + .run( + workOrderForm.workOrderTypeId, + workOrderNumber, + workOrderForm.workOrderDescription, + workOrderForm.workOrderOpenDateString + ? dateStringToInteger(workOrderForm.workOrderOpenDateString) + : dateToInteger(rightNow), + workOrderForm.workOrderCloseDateString + ? dateStringToInteger(workOrderForm.workOrderCloseDateString) + : undefined, + requestSession.user!.userName, + rightNow.getTime(), + requestSession.user!.userName, + rightNow.getTime() + ) - const workOrderId = result.lastInsertRowid as number; + const workOrderId = result.lastInsertRowid as number - if (workOrderForm.lotOccupancyId) { - addWorkOrderLotOccupancy( - { - workOrderId, - lotOccupancyId: workOrderForm.lotOccupancyId - }, - requestSession, - database - ); - } + if (workOrderForm.lotOccupancyId) { + addWorkOrderLotOccupancy( + { + workOrderId, + lotOccupancyId: workOrderForm.lotOccupancyId + }, + requestSession, + database + ) + } - database.close(); + database.close() - return workOrderId; + return workOrderId } -export default addWorkOrder; +export default addWorkOrder diff --git a/helpers/lotOccupancyDB/addWorkOrderComment.d.ts b/helpers/lotOccupancyDB/addWorkOrderComment.d.ts index 6efcf98f..4d637fe4 100644 --- a/helpers/lotOccupancyDB/addWorkOrderComment.d.ts +++ b/helpers/lotOccupancyDB/addWorkOrderComment.d.ts @@ -1,4 +1,4 @@ -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes'; interface AddWorkOrderCommentForm { workOrderId: string; workOrderComment: string; diff --git a/helpers/lotOccupancyDB/addWorkOrderComment.js b/helpers/lotOccupancyDB/addWorkOrderComment.js index 5205f880..c32338d6 100644 --- a/helpers/lotOccupancyDB/addWorkOrderComment.js +++ b/helpers/lotOccupancyDB/addWorkOrderComment.js @@ -1,6 +1,6 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; -import * as dateTimeFunctions from "@cityssm/expressjs-server-js/dateTimeFns.js"; +import sqlite from 'better-sqlite3'; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'; +import * as dateTimeFunctions from '@cityssm/expressjs-server-js/dateTimeFns.js'; export function addWorkOrderComment(workOrderCommentForm, requestSession) { const database = sqlite(databasePath); const rightNow = new Date(); diff --git a/helpers/lotOccupancyDB/addWorkOrderComment.ts b/helpers/lotOccupancyDB/addWorkOrderComment.ts index 84012ebe..32d34f39 100644 --- a/helpers/lotOccupancyDB/addWorkOrderComment.ts +++ b/helpers/lotOccupancyDB/addWorkOrderComment.ts @@ -1,48 +1,48 @@ -import sqlite from "better-sqlite3"; +import sqlite from 'better-sqlite3' -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js' -import * as dateTimeFunctions from "@cityssm/expressjs-server-js/dateTimeFns.js"; +import * as dateTimeFunctions from '@cityssm/expressjs-server-js/dateTimeFns.js' -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes' interface AddWorkOrderCommentForm { - workOrderId: string; - workOrderComment: string; + workOrderId: string + workOrderComment: string } export function addWorkOrderComment( - workOrderCommentForm: AddWorkOrderCommentForm, - requestSession: recordTypes.PartialSession + workOrderCommentForm: AddWorkOrderCommentForm, + requestSession: recordTypes.PartialSession ): number { - const database = sqlite(databasePath); + const database = sqlite(databasePath) - const rightNow = new Date(); + const rightNow = new Date() - const result = database - .prepare( - `insert into WorkOrderComments ( + const result = database + .prepare( + `insert into WorkOrderComments ( workOrderId, workOrderCommentDate, workOrderCommentTime, workOrderComment, recordCreate_userName, recordCreate_timeMillis, recordUpdate_userName, recordUpdate_timeMillis) values (?, ?, ?, ?, ?, ?, ?, ?)` - ) - .run( - workOrderCommentForm.workOrderId, - dateTimeFunctions.dateToInteger(rightNow), - dateTimeFunctions.dateToTimeInteger(rightNow), - workOrderCommentForm.workOrderComment, - requestSession.user.userName, - rightNow.getTime(), - requestSession.user.userName, - rightNow.getTime() - ); + ) + .run( + workOrderCommentForm.workOrderId, + dateTimeFunctions.dateToInteger(rightNow), + dateTimeFunctions.dateToTimeInteger(rightNow), + workOrderCommentForm.workOrderComment, + requestSession.user!.userName, + rightNow.getTime(), + requestSession.user!.userName, + rightNow.getTime() + ) - database.close(); + database.close() - return result.lastInsertRowid as number; + return result.lastInsertRowid as number } -export default addWorkOrderComment; +export default addWorkOrderComment diff --git a/helpers/lotOccupancyDB/addWorkOrderLot.d.ts b/helpers/lotOccupancyDB/addWorkOrderLot.d.ts index d94a6291..ba73ff6e 100644 --- a/helpers/lotOccupancyDB/addWorkOrderLot.d.ts +++ b/helpers/lotOccupancyDB/addWorkOrderLot.d.ts @@ -1,4 +1,4 @@ -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes'; interface AddWorkOrderLotForm { workOrderId: number | string; lotId: number | string; diff --git a/helpers/lotOccupancyDB/addWorkOrderLot.js b/helpers/lotOccupancyDB/addWorkOrderLot.js index eca2f0c8..234c5ab8 100644 --- a/helpers/lotOccupancyDB/addWorkOrderLot.js +++ b/helpers/lotOccupancyDB/addWorkOrderLot.js @@ -1,5 +1,5 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import sqlite from 'better-sqlite3'; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'; export function addWorkOrderLot(workOrderLotForm, requestSession) { const database = sqlite(databasePath); const rightNowMillis = Date.now(); diff --git a/helpers/lotOccupancyDB/addWorkOrderLot.ts b/helpers/lotOccupancyDB/addWorkOrderLot.ts index cc732543..1073c4bf 100644 --- a/helpers/lotOccupancyDB/addWorkOrderLot.ts +++ b/helpers/lotOccupancyDB/addWorkOrderLot.ts @@ -1,36 +1,36 @@ -import sqlite from "better-sqlite3"; +import sqlite from 'better-sqlite3' -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js' -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes' interface AddWorkOrderLotForm { - workOrderId: number | string; - lotId: number | string; + workOrderId: number | string + lotId: number | string } export function addWorkOrderLot( - workOrderLotForm: AddWorkOrderLotForm, - requestSession: recordTypes.PartialSession + workOrderLotForm: AddWorkOrderLotForm, + requestSession: recordTypes.PartialSession ): boolean { - const database = sqlite(databasePath); + const database = sqlite(databasePath) - const rightNowMillis = Date.now(); + const rightNowMillis = Date.now() - const row: { recordDelete_timeMillis?: number } = database - .prepare( - `select recordDelete_timeMillis + const row: { recordDelete_timeMillis?: number } = database + .prepare( + `select recordDelete_timeMillis from WorkOrderLots where workOrderId = ? and lotId = ?` - ) - .get(workOrderLotForm.workOrderId, workOrderLotForm.lotId); + ) + .get(workOrderLotForm.workOrderId, workOrderLotForm.lotId) - if (row) { - if (row.recordDelete_timeMillis) { - database - .prepare( - `update WorkOrderLots + if (row) { + if (row.recordDelete_timeMillis) { + database + .prepare( + `update WorkOrderLots set recordCreate_userName = ?, recordCreate_timeMillis = ?, recordUpdate_userName = ?, @@ -39,38 +39,38 @@ export function addWorkOrderLot( recordDelete_timeMillis = null where workOrderId = ? and lotId = ?` - ) - .run( - requestSession.user.userName, - rightNowMillis, - requestSession.user.userName, - rightNowMillis, - workOrderLotForm.workOrderId, - workOrderLotForm.lotId - ); - } - } else { - database - .prepare( - `insert into WorkOrderLots ( + ) + .run( + requestSession.user!.userName, + rightNowMillis, + requestSession.user!.userName, + rightNowMillis, + workOrderLotForm.workOrderId, + workOrderLotForm.lotId + ) + } + } else { + database + .prepare( + `insert into WorkOrderLots ( workOrderId, lotId, recordCreate_userName, recordCreate_timeMillis, recordUpdate_userName, recordUpdate_timeMillis) values (?, ?, ?, ?, ?, ?)` - ) - .run( - workOrderLotForm.workOrderId, - workOrderLotForm.lotId, - requestSession.user.userName, - rightNowMillis, - requestSession.user.userName, - rightNowMillis - ); - } + ) + .run( + workOrderLotForm.workOrderId, + workOrderLotForm.lotId, + requestSession.user!.userName, + rightNowMillis, + requestSession.user!.userName, + rightNowMillis + ) + } - database.close(); + database.close() - return true; + return true } -export default addWorkOrderLot; +export default addWorkOrderLot diff --git a/helpers/lotOccupancyDB/addWorkOrderLotOccupancy.d.ts b/helpers/lotOccupancyDB/addWorkOrderLotOccupancy.d.ts index 2fa8531c..fcc3e040 100644 --- a/helpers/lotOccupancyDB/addWorkOrderLotOccupancy.d.ts +++ b/helpers/lotOccupancyDB/addWorkOrderLotOccupancy.d.ts @@ -1,5 +1,5 @@ -import sqlite from "better-sqlite3"; -import type * as recordTypes from "../../types/recordTypes"; +import sqlite from 'better-sqlite3'; +import type * as recordTypes from '../../types/recordTypes'; interface AddWorkOrderLotOccupancyForm { workOrderId: number | string; lotOccupancyId: number | string; diff --git a/helpers/lotOccupancyDB/addWorkOrderLotOccupancy.js b/helpers/lotOccupancyDB/addWorkOrderLotOccupancy.js index 82c6299c..e7f5a28d 100644 --- a/helpers/lotOccupancyDB/addWorkOrderLotOccupancy.js +++ b/helpers/lotOccupancyDB/addWorkOrderLotOccupancy.js @@ -1,7 +1,7 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import sqlite from 'better-sqlite3'; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'; export function addWorkOrderLotOccupancy(workOrderLotOccupancyForm, requestSession, connectedDatabase) { - const database = connectedDatabase || sqlite(databasePath); + const database = connectedDatabase ?? sqlite(databasePath); const rightNowMillis = Date.now(); const row = database .prepare(`select recordDelete_timeMillis diff --git a/helpers/lotOccupancyDB/addWorkOrderLotOccupancy.ts b/helpers/lotOccupancyDB/addWorkOrderLotOccupancy.ts index ec822f55..2596bb66 100644 --- a/helpers/lotOccupancyDB/addWorkOrderLotOccupancy.ts +++ b/helpers/lotOccupancyDB/addWorkOrderLotOccupancy.ts @@ -1,37 +1,40 @@ -import sqlite from "better-sqlite3"; +import sqlite from 'better-sqlite3' -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js' -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes' interface AddWorkOrderLotOccupancyForm { - workOrderId: number | string; - lotOccupancyId: number | string; + workOrderId: number | string + lotOccupancyId: number | string } export function addWorkOrderLotOccupancy( - workOrderLotOccupancyForm: AddWorkOrderLotOccupancyForm, - requestSession: recordTypes.PartialSession, - connectedDatabase?: sqlite.Database + workOrderLotOccupancyForm: AddWorkOrderLotOccupancyForm, + requestSession: recordTypes.PartialSession, + connectedDatabase?: sqlite.Database ): boolean { - const database = connectedDatabase || sqlite(databasePath); + const database = connectedDatabase ?? sqlite(databasePath) - const rightNowMillis = Date.now(); + const rightNowMillis = Date.now() - const row: { recordDelete_timeMillis?: number } = database - .prepare( - `select recordDelete_timeMillis + const row: { recordDelete_timeMillis?: number } = database + .prepare( + `select recordDelete_timeMillis from WorkOrderLotOccupancies where workOrderId = ? and lotOccupancyId = ?` - ) - .get(workOrderLotOccupancyForm.workOrderId, workOrderLotOccupancyForm.lotOccupancyId); + ) + .get( + workOrderLotOccupancyForm.workOrderId, + workOrderLotOccupancyForm.lotOccupancyId + ) - if (row) { - if (row.recordDelete_timeMillis) { - database - .prepare( - `update WorkOrderLotOccupancies + if (row) { + if (row.recordDelete_timeMillis) { + database + .prepare( + `update WorkOrderLotOccupancies set recordCreate_userName = ?, recordCreate_timeMillis = ?, recordUpdate_userName = ?, @@ -40,40 +43,40 @@ export function addWorkOrderLotOccupancy( recordDelete_timeMillis = null where workOrderId = ? and lotOccupancyId = ?` - ) - .run( - requestSession.user.userName, - rightNowMillis, - requestSession.user.userName, - rightNowMillis, - workOrderLotOccupancyForm.workOrderId, - workOrderLotOccupancyForm.lotOccupancyId - ); - } - } else { - database - .prepare( - `insert into WorkOrderLotOccupancies ( + ) + .run( + requestSession.user!.userName, + rightNowMillis, + requestSession.user!.userName, + rightNowMillis, + workOrderLotOccupancyForm.workOrderId, + workOrderLotOccupancyForm.lotOccupancyId + ) + } + } else { + database + .prepare( + `insert into WorkOrderLotOccupancies ( workOrderId, lotOccupancyId, recordCreate_userName, recordCreate_timeMillis, recordUpdate_userName, recordUpdate_timeMillis) values (?, ?, ?, ?, ?, ?)` - ) - .run( - workOrderLotOccupancyForm.workOrderId, - workOrderLotOccupancyForm.lotOccupancyId, - requestSession.user.userName, - rightNowMillis, - requestSession.user.userName, - rightNowMillis - ); - } + ) + .run( + workOrderLotOccupancyForm.workOrderId, + workOrderLotOccupancyForm.lotOccupancyId, + requestSession.user!.userName, + rightNowMillis, + requestSession.user!.userName, + rightNowMillis + ) + } - if (!connectedDatabase) { - database.close(); - } + if (!connectedDatabase) { + database.close() + } - return true; + return true } -export default addWorkOrderLotOccupancy; +export default addWorkOrderLotOccupancy diff --git a/helpers/lotOccupancyDB/addWorkOrderMilestone.d.ts b/helpers/lotOccupancyDB/addWorkOrderMilestone.d.ts index 1cb34777..3a2501c2 100644 --- a/helpers/lotOccupancyDB/addWorkOrderMilestone.d.ts +++ b/helpers/lotOccupancyDB/addWorkOrderMilestone.d.ts @@ -1,4 +1,4 @@ -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes'; interface AddWorkOrderMilestoneForm { workOrderId: string | number; workOrderMilestoneTypeId?: number | string; diff --git a/helpers/lotOccupancyDB/addWorkOrderMilestone.js b/helpers/lotOccupancyDB/addWorkOrderMilestone.js index 05c786e3..14c8c6a7 100644 --- a/helpers/lotOccupancyDB/addWorkOrderMilestone.js +++ b/helpers/lotOccupancyDB/addWorkOrderMilestone.js @@ -1,19 +1,19 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; -import { dateStringToInteger, timeStringToInteger } from "@cityssm/expressjs-server-js/dateTimeFns.js"; +import sqlite from 'better-sqlite3'; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'; +import { dateStringToInteger, timeStringToInteger } from '@cityssm/expressjs-server-js/dateTimeFns.js'; export function addWorkOrderMilestone(milestoneForm, requestSession) { const rightNow = new Date(); const database = sqlite(databasePath); const result = database .prepare(`insert into WorkOrderMilestones ( - workOrderId, workOrderMilestoneTypeId, - workOrderMilestoneDate, workOrderMilestoneTime, - workOrderMilestoneDescription, - workOrderMilestoneCompletionDate, workOrderMilestoneCompletionTime, - recordCreate_userName, recordCreate_timeMillis, - recordUpdate_userName, recordUpdate_timeMillis) - values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`) - .run(milestoneForm.workOrderId, milestoneForm.workOrderMilestoneTypeId || undefined, dateStringToInteger(milestoneForm.workOrderMilestoneDateString), milestoneForm.workOrderMilestoneTimeString + workOrderId, workOrderMilestoneTypeId, + workOrderMilestoneDate, workOrderMilestoneTime, + workOrderMilestoneDescription, + workOrderMilestoneCompletionDate, workOrderMilestoneCompletionTime, + recordCreate_userName, recordCreate_timeMillis, + recordUpdate_userName, recordUpdate_timeMillis) + values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`) + .run(milestoneForm.workOrderId, milestoneForm.workOrderMilestoneTypeId ?? undefined, dateStringToInteger(milestoneForm.workOrderMilestoneDateString), milestoneForm.workOrderMilestoneTimeString ? timeStringToInteger(milestoneForm.workOrderMilestoneTimeString) : 0, milestoneForm.workOrderMilestoneDescription, milestoneForm.workOrderMilestoneCompletionDateString ? dateStringToInteger(milestoneForm.workOrderMilestoneCompletionDateString) diff --git a/helpers/lotOccupancyDB/addWorkOrderMilestone.ts b/helpers/lotOccupancyDB/addWorkOrderMilestone.ts index 50f51cef..ec80d142 100644 --- a/helpers/lotOccupancyDB/addWorkOrderMilestone.ts +++ b/helpers/lotOccupancyDB/addWorkOrderMilestone.ts @@ -1,66 +1,72 @@ -import sqlite from "better-sqlite3"; +/* eslint-disable @typescript-eslint/indent */ -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import sqlite from 'better-sqlite3' + +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js' import { - dateStringToInteger, - timeStringToInteger -} from "@cityssm/expressjs-server-js/dateTimeFns.js"; + dateStringToInteger, + timeStringToInteger +} from '@cityssm/expressjs-server-js/dateTimeFns.js' -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes' interface AddWorkOrderMilestoneForm { - workOrderId: string | number; - workOrderMilestoneTypeId?: number | string; - workOrderMilestoneDateString: string; - workOrderMilestoneTimeString?: string; - workOrderMilestoneDescription: string; - workOrderMilestoneCompletionDateString?: string; - workOrderMilestoneCompletionTimeString?: string; + workOrderId: string | number + workOrderMilestoneTypeId?: number | string + workOrderMilestoneDateString: string + workOrderMilestoneTimeString?: string + workOrderMilestoneDescription: string + workOrderMilestoneCompletionDateString?: string + workOrderMilestoneCompletionTimeString?: string } export function addWorkOrderMilestone( - milestoneForm: AddWorkOrderMilestoneForm, - requestSession: recordTypes.PartialSession + milestoneForm: AddWorkOrderMilestoneForm, + requestSession: recordTypes.PartialSession ): number { - const rightNow = new Date(); + const rightNow = new Date() - const database = sqlite(databasePath); + const database = sqlite(databasePath) - const result = database - .prepare( - `insert into WorkOrderMilestones ( - workOrderId, workOrderMilestoneTypeId, - workOrderMilestoneDate, workOrderMilestoneTime, - workOrderMilestoneDescription, - workOrderMilestoneCompletionDate, workOrderMilestoneCompletionTime, - recordCreate_userName, recordCreate_timeMillis, - recordUpdate_userName, recordUpdate_timeMillis) - values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)` - ) - .run( - milestoneForm.workOrderId, - milestoneForm.workOrderMilestoneTypeId || undefined, - dateStringToInteger(milestoneForm.workOrderMilestoneDateString), - milestoneForm.workOrderMilestoneTimeString - ? timeStringToInteger(milestoneForm.workOrderMilestoneTimeString) - : 0, - milestoneForm.workOrderMilestoneDescription, + const result = database + .prepare( + `insert into WorkOrderMilestones ( + workOrderId, workOrderMilestoneTypeId, + workOrderMilestoneDate, workOrderMilestoneTime, + workOrderMilestoneDescription, + workOrderMilestoneCompletionDate, workOrderMilestoneCompletionTime, + recordCreate_userName, recordCreate_timeMillis, + recordUpdate_userName, recordUpdate_timeMillis) + values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)` + ) + .run( + milestoneForm.workOrderId, + milestoneForm.workOrderMilestoneTypeId ?? undefined, + dateStringToInteger(milestoneForm.workOrderMilestoneDateString), + milestoneForm.workOrderMilestoneTimeString + ? timeStringToInteger(milestoneForm.workOrderMilestoneTimeString) + : 0, + milestoneForm.workOrderMilestoneDescription, + milestoneForm.workOrderMilestoneCompletionDateString + ? dateStringToInteger( milestoneForm.workOrderMilestoneCompletionDateString - ? dateStringToInteger(milestoneForm.workOrderMilestoneCompletionDateString) - : undefined, + ) + : undefined, + milestoneForm.workOrderMilestoneCompletionTimeString + ? timeStringToInteger( milestoneForm.workOrderMilestoneCompletionTimeString - ? timeStringToInteger(milestoneForm.workOrderMilestoneCompletionTimeString) - : undefined, - requestSession.user.userName, - rightNow.getTime(), - requestSession.user.userName, - rightNow.getTime() - ); + ) + : undefined, + requestSession.user!.userName, + rightNow.getTime(), + requestSession.user!.userName, + rightNow.getTime() + ) - database.close(); + database.close() - return result.lastInsertRowid as number; + return result.lastInsertRowid as number } -export default addWorkOrderMilestone; +export default addWorkOrderMilestone diff --git a/helpers/lotOccupancyDB/cleanupDatabase.d.ts b/helpers/lotOccupancyDB/cleanupDatabase.d.ts index 204b482f..a9ebf68a 100644 --- a/helpers/lotOccupancyDB/cleanupDatabase.d.ts +++ b/helpers/lotOccupancyDB/cleanupDatabase.d.ts @@ -1,4 +1,4 @@ -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes'; export declare function cleanupDatabase(requestSession: recordTypes.PartialSession): { inactivedRecordCount: number; purgedRecordCount: number; diff --git a/helpers/lotOccupancyDB/cleanupDatabase.js b/helpers/lotOccupancyDB/cleanupDatabase.js index eebabd07..f7c87de1 100644 --- a/helpers/lotOccupancyDB/cleanupDatabase.js +++ b/helpers/lotOccupancyDB/cleanupDatabase.js @@ -1,232 +1,234 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; -import * as configFunctions from "../functions.config.js"; +import sqlite from 'better-sqlite3'; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'; +import * as configFunctions from '../functions.config.js'; export function cleanupDatabase(requestSession) { const database = sqlite(databasePath); const rightNowMillis = Date.now(); - const recordDelete_timeMillisMin = rightNowMillis - - configFunctions.getProperty("settings.adminCleanup.recordDeleteAgeDays") * 86400 * 1000; + const recordDeleteTimeMillisMin = rightNowMillis - + configFunctions.getProperty('settings.adminCleanup.recordDeleteAgeDays') * + 86400 * + 1000; let inactivedRecordCount = 0; let purgedRecordCount = 0; inactivedRecordCount += database .prepare(`update WorkOrderComments - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where recordDelete_timeMillis is null - and workOrderId in ( - select workOrderId from WorkOrders where recordDelete_timeMillis is not null)`) + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where recordDelete_timeMillis is null + and workOrderId in ( + select workOrderId from WorkOrders where recordDelete_timeMillis is not null)`) .run(requestSession.user.userName, rightNowMillis).changes; purgedRecordCount += database - .prepare("delete from WorkOrderComments where recordDelete_timeMillis <= ?") - .run(recordDelete_timeMillisMin).changes; + .prepare('delete from WorkOrderComments where recordDelete_timeMillis <= ?') + .run(recordDeleteTimeMillisMin).changes; inactivedRecordCount += database .prepare(`update WorkOrderLotOccupancies - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where recordDelete_timeMillis is null - and workOrderId in ( - select workOrderId from WorkOrders where recordDelete_timeMillis is not null)`) + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where recordDelete_timeMillis is null + and workOrderId in ( + select workOrderId from WorkOrders where recordDelete_timeMillis is not null)`) .run(requestSession.user.userName, rightNowMillis).changes; purgedRecordCount += database - .prepare("delete from WorkOrderLotOccupancies where recordDelete_timeMillis <= ?") - .run(recordDelete_timeMillisMin).changes; + .prepare('delete from WorkOrderLotOccupancies where recordDelete_timeMillis <= ?') + .run(recordDeleteTimeMillisMin).changes; inactivedRecordCount += database .prepare(`update WorkOrderLots - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where recordDelete_timeMillis is null - and workOrderId in ( - select workOrderId from WorkOrders where recordDelete_timeMillis is not null)`) + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where recordDelete_timeMillis is null + and workOrderId in ( + select workOrderId from WorkOrders where recordDelete_timeMillis is not null)`) .run(requestSession.user.userName, rightNowMillis).changes; purgedRecordCount += database - .prepare("delete from WorkOrderLots where recordDelete_timeMillis <= ?") - .run(recordDelete_timeMillisMin).changes; + .prepare('delete from WorkOrderLots where recordDelete_timeMillis <= ?') + .run(recordDeleteTimeMillisMin).changes; inactivedRecordCount += database .prepare(`update WorkOrderMilestones - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where recordDelete_timeMillis is null - and workOrderId in ( - select workOrderId from WorkOrders where recordDelete_timeMillis is not null)`) + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where recordDelete_timeMillis is null + and workOrderId in ( + select workOrderId from WorkOrders where recordDelete_timeMillis is not null)`) .run(requestSession.user.userName, rightNowMillis).changes; purgedRecordCount += database - .prepare("delete from WorkOrderMilestones where recordDelete_timeMillis <= ?") - .run(recordDelete_timeMillisMin).changes; + .prepare('delete from WorkOrderMilestones where recordDelete_timeMillis <= ?') + .run(recordDeleteTimeMillisMin).changes; purgedRecordCount += database .prepare(`delete from WorkOrders - where recordDelete_timeMillis <= ? - and workOrderId not in (select workOrderId from WorkOrderComments) - and workOrderId not in (select workOrderId from WorkOrderLotOccupancies) - and workOrderId not in (select workOrderId from WorkOrderLots) - and workOrderId not in (select workOrderId from WorkOrderMilestones)`) - .run(recordDelete_timeMillisMin).changes; + where recordDelete_timeMillis <= ? + and workOrderId not in (select workOrderId from WorkOrderComments) + and workOrderId not in (select workOrderId from WorkOrderLotOccupancies) + and workOrderId not in (select workOrderId from WorkOrderLots) + and workOrderId not in (select workOrderId from WorkOrderMilestones)`) + .run(recordDeleteTimeMillisMin).changes; purgedRecordCount += database .prepare(`delete from WorkOrderMilestoneTypes - where recordDelete_timeMillis <= ? - and workOrderMilestoneTypeId not in ( - select workOrderMilestoneTypeId from WorkOrderMilestones)`) - .run(recordDelete_timeMillisMin).changes; + where recordDelete_timeMillis <= ? + and workOrderMilestoneTypeId not in ( + select workOrderMilestoneTypeId from WorkOrderMilestones)`) + .run(recordDeleteTimeMillisMin).changes; purgedRecordCount += database .prepare(`delete from WorkOrderTypes - where recordDelete_timeMillis <= ? - and workOrderTypeId not in (select workOrderTypeId from WorkOrders)`) - .run(recordDelete_timeMillisMin).changes; + where recordDelete_timeMillis <= ? + and workOrderTypeId not in (select workOrderTypeId from WorkOrders)`) + .run(recordDeleteTimeMillisMin).changes; inactivedRecordCount += database .prepare(`update LotOccupancyComments - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where recordDelete_timeMillis is null - and lotOccupancyId in ( - select lotOccupancyId from LotOccupancies where recordDelete_timeMillis is not null)`) + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where recordDelete_timeMillis is null + and lotOccupancyId in ( + select lotOccupancyId from LotOccupancies where recordDelete_timeMillis is not null)`) .run(requestSession.user.userName, rightNowMillis).changes; purgedRecordCount += database - .prepare("delete from LotOccupancyComments where recordDelete_timeMillis <= ?") - .run(recordDelete_timeMillisMin).changes; + .prepare('delete from LotOccupancyComments where recordDelete_timeMillis <= ?') + .run(recordDeleteTimeMillisMin).changes; inactivedRecordCount += database .prepare(`update LotOccupancyFields - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where recordDelete_timeMillis is null - and lotOccupancyId in (select lotOccupancyId from LotOccupancies where recordDelete_timeMillis is not null)`) + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where recordDelete_timeMillis is null + and lotOccupancyId in (select lotOccupancyId from LotOccupancies where recordDelete_timeMillis is not null)`) .run(requestSession.user.userName, rightNowMillis).changes; purgedRecordCount += database - .prepare("delete from LotOccupancyFields where recordDelete_timeMillis <= ?") - .run(recordDelete_timeMillisMin).changes; + .prepare('delete from LotOccupancyFields where recordDelete_timeMillis <= ?') + .run(recordDeleteTimeMillisMin).changes; inactivedRecordCount += database .prepare(`update LotOccupancyOccupants - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where recordDelete_timeMillis is null - and lotOccupancyId in (select lotOccupancyId from LotOccupancies where recordDelete_timeMillis is not null)`) + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where recordDelete_timeMillis is null + and lotOccupancyId in (select lotOccupancyId from LotOccupancies where recordDelete_timeMillis is not null)`) .run(requestSession.user.userName, rightNowMillis).changes; purgedRecordCount += database - .prepare("delete from LotOccupancyOccupants where recordDelete_timeMillis <= ?") - .run(recordDelete_timeMillisMin).changes; + .prepare('delete from LotOccupancyOccupants where recordDelete_timeMillis <= ?') + .run(recordDeleteTimeMillisMin).changes; purgedRecordCount += database - .prepare("delete from LotOccupancyFees where recordDelete_timeMillis <= ?") - .run(recordDelete_timeMillisMin).changes; + .prepare('delete from LotOccupancyFees where recordDelete_timeMillis <= ?') + .run(recordDeleteTimeMillisMin).changes; purgedRecordCount += database - .prepare("delete from LotOccupancyTransactions where recordDelete_timeMillis <= ?") - .run(recordDelete_timeMillisMin).changes; + .prepare('delete from LotOccupancyTransactions where recordDelete_timeMillis <= ?') + .run(recordDeleteTimeMillisMin).changes; purgedRecordCount += database .prepare(`delete from LotOccupancies - where recordDelete_timeMillis <= ? - and lotOccupancyId not in (select lotOccupancyId from LotOccupancyComments) - and lotOccupancyId not in (select lotOccupancyId from LotOccupancyFees) - and lotOccupancyId not in (select lotOccupancyId from LotOccupancyFields) - and lotOccupancyId not in (select lotOccupancyId from LotOccupancyOccupants) - and lotOccupancyId not in (select lotOccupancyId from LotOccupancyTransactions) - and lotOccupancyId not in (select lotOccupancyId from WorkOrderLotOccupancies)`) - .run(recordDelete_timeMillisMin).changes; + where recordDelete_timeMillis <= ? + and lotOccupancyId not in (select lotOccupancyId from LotOccupancyComments) + and lotOccupancyId not in (select lotOccupancyId from LotOccupancyFees) + and lotOccupancyId not in (select lotOccupancyId from LotOccupancyFields) + and lotOccupancyId not in (select lotOccupancyId from LotOccupancyOccupants) + and lotOccupancyId not in (select lotOccupancyId from LotOccupancyTransactions) + and lotOccupancyId not in (select lotOccupancyId from WorkOrderLotOccupancies)`) + .run(recordDeleteTimeMillisMin).changes; inactivedRecordCount += database .prepare(`update Fees - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where recordDelete_timeMillis is null - and feeCategoryId in (select feeCategoryId from FeeCategories where recordDelete_timeMillis is not null)`) + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where recordDelete_timeMillis is null + and feeCategoryId in (select feeCategoryId from FeeCategories where recordDelete_timeMillis is not null)`) .run(requestSession.user.userName, rightNowMillis).changes; purgedRecordCount += database .prepare(`delete from Fees - where recordDelete_timeMillis <= ? - and feeId not in (select feeId from LotOccupancyFees)`) - .run(recordDelete_timeMillisMin).changes; + where recordDelete_timeMillis <= ? + and feeId not in (select feeId from LotOccupancyFees)`) + .run(recordDeleteTimeMillisMin).changes; purgedRecordCount += database .prepare(`delete from FeeCategories - where recordDelete_timeMillis <= ? - and feeCategoryId not in (select feeCategoryId from Fees)`) - .run(recordDelete_timeMillisMin).changes; + where recordDelete_timeMillis <= ? + and feeCategoryId not in (select feeCategoryId from Fees)`) + .run(recordDeleteTimeMillisMin).changes; inactivedRecordCount += database .prepare(`update OccupancyTypeFields - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where recordDelete_timeMillis is null - and occupancyTypeId in (select occupancyTypeId from OccupancyTypes where recordDelete_timeMillis is not null)`) + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where recordDelete_timeMillis is null + and occupancyTypeId in (select occupancyTypeId from OccupancyTypes where recordDelete_timeMillis is not null)`) .run(requestSession.user.userName, rightNowMillis).changes; purgedRecordCount += database .prepare(`delete from OccupancyTypeFields - where recordDelete_timeMillis <= ? - and occupancyTypeFieldId not in (select occupancyTypeFieldId from LotOccupancyFields)`) - .run(recordDelete_timeMillisMin).changes; + where recordDelete_timeMillis <= ? + and occupancyTypeFieldId not in (select occupancyTypeFieldId from LotOccupancyFields)`) + .run(recordDeleteTimeMillisMin).changes; inactivedRecordCount += database .prepare(`update OccupancyTypePrints - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where recordDelete_timeMillis is null - and occupancyTypeId in (select occupancyTypeId from OccupancyTypes where recordDelete_timeMillis is not null)`) + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where recordDelete_timeMillis is null + and occupancyTypeId in (select occupancyTypeId from OccupancyTypes where recordDelete_timeMillis is not null)`) .run(requestSession.user.userName, rightNowMillis).changes; purgedRecordCount += database - .prepare("delete from OccupancyTypePrints where recordDelete_timeMillis <= ?") - .run(recordDelete_timeMillisMin).changes; + .prepare('delete from OccupancyTypePrints where recordDelete_timeMillis <= ?') + .run(recordDeleteTimeMillisMin).changes; purgedRecordCount += database .prepare(`delete from OccupancyTypes - where recordDelete_timeMillis <= ? - and occupancyTypeId not in (select occupancyTypeId from OccupancyTypeFields) - and occupancyTypeId not in (select occupancyTypeId from OccupancyTypePrints) - and occupancyTypeId not in (select occupancyTypeId from LotOccupancies) - and occupancyTypeId not in (select occupancyTypeId from Fees)`) - .run(recordDelete_timeMillisMin).changes; + where recordDelete_timeMillis <= ? + and occupancyTypeId not in (select occupancyTypeId from OccupancyTypeFields) + and occupancyTypeId not in (select occupancyTypeId from OccupancyTypePrints) + and occupancyTypeId not in (select occupancyTypeId from LotOccupancies) + and occupancyTypeId not in (select occupancyTypeId from Fees)`) + .run(recordDeleteTimeMillisMin).changes; purgedRecordCount += database .prepare(`delete from LotOccupantTypes - where recordDelete_timeMillis <= ? - and lotOccupantTypeId not in (select lotOccupantTypeId from LotOccupancyOccupants)`) - .run(recordDelete_timeMillisMin).changes; + where recordDelete_timeMillis <= ? + and lotOccupantTypeId not in (select lotOccupantTypeId from LotOccupancyOccupants)`) + .run(recordDeleteTimeMillisMin).changes; inactivedRecordCount += database .prepare(`update LotComments - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where recordDelete_timeMillis is null - and lotId in (select lotId from Lots where recordDelete_timeMillis is not null)`) + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where recordDelete_timeMillis is null + and lotId in (select lotId from Lots where recordDelete_timeMillis is not null)`) .run(requestSession.user.userName, rightNowMillis).changes; purgedRecordCount += database - .prepare("delete from LotComments where recordDelete_timeMillis <= ?") - .run(recordDelete_timeMillisMin).changes; + .prepare('delete from LotComments where recordDelete_timeMillis <= ?') + .run(recordDeleteTimeMillisMin).changes; inactivedRecordCount += database .prepare(`update LotFields - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where recordDelete_timeMillis is null - and lotId in (select lotId from Lots where recordDelete_timeMillis is not null)`) + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where recordDelete_timeMillis is null + and lotId in (select lotId from Lots where recordDelete_timeMillis is not null)`) .run(requestSession.user.userName, rightNowMillis).changes; purgedRecordCount += database - .prepare("delete from LotFields where recordDelete_timeMillis <= ?") - .run(recordDelete_timeMillisMin).changes; + .prepare('delete from LotFields where recordDelete_timeMillis <= ?') + .run(recordDeleteTimeMillisMin).changes; inactivedRecordCount += database .prepare(`update Lots - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where recordDelete_timeMillis is null - and mapId in (select mapId from Maps where recordDelete_timeMillis is not null)`) + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where recordDelete_timeMillis is null + and mapId in (select mapId from Maps where recordDelete_timeMillis is not null)`) .run(requestSession.user.userName, rightNowMillis).changes; purgedRecordCount += database .prepare(`delete from Lots - where recordDelete_timeMillis <= ? - and lotId not in (select lotId from LotComments) - and lotId not in (select lotId from LotFields) - and lotId not in (select lotId from LotOccupancies) - and lotId not in (select lotId from WorkOrderLots)`) - .run(recordDelete_timeMillisMin).changes; + where recordDelete_timeMillis <= ? + and lotId not in (select lotId from LotComments) + and lotId not in (select lotId from LotFields) + and lotId not in (select lotId from LotOccupancies) + and lotId not in (select lotId from WorkOrderLots)`) + .run(recordDeleteTimeMillisMin).changes; purgedRecordCount += database .prepare(`delete from LotStatuses - where recordDelete_timeMillis <= ? - and lotStatusId not in (select lotStatusId from Lots)`) - .run(recordDelete_timeMillisMin).changes; + where recordDelete_timeMillis <= ? + and lotStatusId not in (select lotStatusId from Lots)`) + .run(recordDeleteTimeMillisMin).changes; inactivedRecordCount += database .prepare(`update LotTypeFields - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where recordDelete_timeMillis is null - and lotTypeId in (select lotTypeId from LotTypes where recordDelete_timeMillis is not null)`) + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where recordDelete_timeMillis is null + and lotTypeId in (select lotTypeId from LotTypes where recordDelete_timeMillis is not null)`) .run(requestSession.user.userName, rightNowMillis).changes; purgedRecordCount += database .prepare(`delete from LotTypeFields - where recordDelete_timeMillis <= ? - and lotTypeFieldId not in (select lotTypeFieldId from LotFields)`) - .run(recordDelete_timeMillisMin).changes; + where recordDelete_timeMillis <= ? + and lotTypeFieldId not in (select lotTypeFieldId from LotFields)`) + .run(recordDeleteTimeMillisMin).changes; purgedRecordCount += database .prepare(`delete from LotTypes - where recordDelete_timeMillis <= ? - and lotTypeId not in (select lotTypeId from Lots)`) - .run(recordDelete_timeMillisMin).changes; + where recordDelete_timeMillis <= ? + and lotTypeId not in (select lotTypeId from Lots)`) + .run(recordDeleteTimeMillisMin).changes; database.close(); return { inactivedRecordCount, diff --git a/helpers/lotOccupancyDB/cleanupDatabase.ts b/helpers/lotOccupancyDB/cleanupDatabase.ts index a7113b24..c3410f2e 100644 --- a/helpers/lotOccupancyDB/cleanupDatabase.ts +++ b/helpers/lotOccupancyDB/cleanupDatabase.ts @@ -1,437 +1,456 @@ -import sqlite from "better-sqlite3"; - -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; - -import * as configFunctions from "../functions.config.js"; - -import type * as recordTypes from "../../types/recordTypes"; - -export function cleanupDatabase(requestSession: recordTypes.PartialSession) { - const database = sqlite(databasePath); - - const rightNowMillis = Date.now(); - const recordDelete_timeMillisMin = - rightNowMillis - - configFunctions.getProperty("settings.adminCleanup.recordDeleteAgeDays") * 86_400 * 1000; - - let inactivedRecordCount = 0; - let purgedRecordCount = 0; - - /* - * Work Order Comments - */ - - inactivedRecordCount += database - .prepare( - `update WorkOrderComments - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where recordDelete_timeMillis is null - and workOrderId in ( - select workOrderId from WorkOrders where recordDelete_timeMillis is not null)` - ) - .run(requestSession.user.userName, rightNowMillis).changes; - - purgedRecordCount += database - .prepare("delete from WorkOrderComments where recordDelete_timeMillis <= ?") - .run(recordDelete_timeMillisMin).changes; - - /* - * Work Order Lot Occupancies - */ - - inactivedRecordCount += database - .prepare( - `update WorkOrderLotOccupancies - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where recordDelete_timeMillis is null - and workOrderId in ( - select workOrderId from WorkOrders where recordDelete_timeMillis is not null)` - ) - .run(requestSession.user.userName, rightNowMillis).changes; - - purgedRecordCount += database - .prepare("delete from WorkOrderLotOccupancies where recordDelete_timeMillis <= ?") - .run(recordDelete_timeMillisMin).changes; - - /* - * Work Order Lots - */ - - inactivedRecordCount += database - .prepare( - `update WorkOrderLots - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where recordDelete_timeMillis is null - and workOrderId in ( - select workOrderId from WorkOrders where recordDelete_timeMillis is not null)` - ) - .run(requestSession.user.userName, rightNowMillis).changes; - - purgedRecordCount += database - .prepare("delete from WorkOrderLots where recordDelete_timeMillis <= ?") - .run(recordDelete_timeMillisMin).changes; - - /* - * Work Order Milestones - */ - - inactivedRecordCount += database - .prepare( - `update WorkOrderMilestones - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where recordDelete_timeMillis is null - and workOrderId in ( - select workOrderId from WorkOrders where recordDelete_timeMillis is not null)` - ) - .run(requestSession.user.userName, rightNowMillis).changes; - - purgedRecordCount += database - .prepare("delete from WorkOrderMilestones where recordDelete_timeMillis <= ?") - .run(recordDelete_timeMillisMin).changes; - - /* - * Work Orders - */ - - purgedRecordCount += database - .prepare( - `delete from WorkOrders - where recordDelete_timeMillis <= ? - and workOrderId not in (select workOrderId from WorkOrderComments) - and workOrderId not in (select workOrderId from WorkOrderLotOccupancies) - and workOrderId not in (select workOrderId from WorkOrderLots) - and workOrderId not in (select workOrderId from WorkOrderMilestones)` - ) - .run(recordDelete_timeMillisMin).changes; - - /* - * Work Order Milestone Types - */ - - purgedRecordCount += database - .prepare( - `delete from WorkOrderMilestoneTypes - where recordDelete_timeMillis <= ? - and workOrderMilestoneTypeId not in ( - select workOrderMilestoneTypeId from WorkOrderMilestones)` - ) - .run(recordDelete_timeMillisMin).changes; - - /* - * Work Order Types - */ - - purgedRecordCount += database - .prepare( - `delete from WorkOrderTypes - where recordDelete_timeMillis <= ? - and workOrderTypeId not in (select workOrderTypeId from WorkOrders)` - ) - .run(recordDelete_timeMillisMin).changes; - - /* - * Lot Occupancy Comments - */ - - inactivedRecordCount += database - .prepare( - `update LotOccupancyComments - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where recordDelete_timeMillis is null - and lotOccupancyId in ( - select lotOccupancyId from LotOccupancies where recordDelete_timeMillis is not null)` - ) - .run(requestSession.user.userName, rightNowMillis).changes; - - purgedRecordCount += database - .prepare("delete from LotOccupancyComments where recordDelete_timeMillis <= ?") - .run(recordDelete_timeMillisMin).changes; - - /* - * Lot Occupancy Fields - */ - - inactivedRecordCount += database - .prepare( - `update LotOccupancyFields - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where recordDelete_timeMillis is null - and lotOccupancyId in (select lotOccupancyId from LotOccupancies where recordDelete_timeMillis is not null)` - ) - .run(requestSession.user.userName, rightNowMillis).changes; - - purgedRecordCount += database - .prepare("delete from LotOccupancyFields where recordDelete_timeMillis <= ?") - .run(recordDelete_timeMillisMin).changes; - - /* - * Lot Occupancy Occupants - */ - - inactivedRecordCount += database - .prepare( - `update LotOccupancyOccupants - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where recordDelete_timeMillis is null - and lotOccupancyId in (select lotOccupancyId from LotOccupancies where recordDelete_timeMillis is not null)` - ) - .run(requestSession.user.userName, rightNowMillis).changes; - - purgedRecordCount += database - .prepare("delete from LotOccupancyOccupants where recordDelete_timeMillis <= ?") - .run(recordDelete_timeMillisMin).changes; - - /* - * Lot Occupancy Fees/Transactions - * - Maintain financials, do not delete related. - */ - - purgedRecordCount += database - .prepare("delete from LotOccupancyFees where recordDelete_timeMillis <= ?") - .run(recordDelete_timeMillisMin).changes; - - purgedRecordCount += database - .prepare("delete from LotOccupancyTransactions where recordDelete_timeMillis <= ?") - .run(recordDelete_timeMillisMin).changes; - - /* - * Lot Occupancies - */ - - purgedRecordCount += database - .prepare( - `delete from LotOccupancies - where recordDelete_timeMillis <= ? - and lotOccupancyId not in (select lotOccupancyId from LotOccupancyComments) - and lotOccupancyId not in (select lotOccupancyId from LotOccupancyFees) - and lotOccupancyId not in (select lotOccupancyId from LotOccupancyFields) - and lotOccupancyId not in (select lotOccupancyId from LotOccupancyOccupants) - and lotOccupancyId not in (select lotOccupancyId from LotOccupancyTransactions) - and lotOccupancyId not in (select lotOccupancyId from WorkOrderLotOccupancies)` - ) - .run(recordDelete_timeMillisMin).changes; - - /* - * Fees - */ - - inactivedRecordCount += database - .prepare( - `update Fees - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where recordDelete_timeMillis is null - and feeCategoryId in (select feeCategoryId from FeeCategories where recordDelete_timeMillis is not null)` - ) - .run(requestSession.user.userName, rightNowMillis).changes; - - purgedRecordCount += database - .prepare( - `delete from Fees - where recordDelete_timeMillis <= ? - and feeId not in (select feeId from LotOccupancyFees)` - ) - .run(recordDelete_timeMillisMin).changes; - - /* - * Fee Categories - */ - - purgedRecordCount += database - .prepare( - `delete from FeeCategories - where recordDelete_timeMillis <= ? - and feeCategoryId not in (select feeCategoryId from Fees)` - ) - .run(recordDelete_timeMillisMin).changes; - - /* - * Occupancy Type Fields - */ - - inactivedRecordCount += database - .prepare( - `update OccupancyTypeFields - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where recordDelete_timeMillis is null - and occupancyTypeId in (select occupancyTypeId from OccupancyTypes where recordDelete_timeMillis is not null)` - ) - .run(requestSession.user.userName, rightNowMillis).changes; - - purgedRecordCount += database - .prepare( - `delete from OccupancyTypeFields - where recordDelete_timeMillis <= ? - and occupancyTypeFieldId not in (select occupancyTypeFieldId from LotOccupancyFields)` - ) - .run(recordDelete_timeMillisMin).changes; - - /* - * Occupancy Type Prints - */ - - inactivedRecordCount += database - .prepare( - `update OccupancyTypePrints - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where recordDelete_timeMillis is null - and occupancyTypeId in (select occupancyTypeId from OccupancyTypes where recordDelete_timeMillis is not null)` - ) - .run(requestSession.user.userName, rightNowMillis).changes; - - purgedRecordCount += database - .prepare("delete from OccupancyTypePrints where recordDelete_timeMillis <= ?") - .run(recordDelete_timeMillisMin).changes; - - /* - * Occupancy Types - */ - - purgedRecordCount += database - .prepare( - `delete from OccupancyTypes - where recordDelete_timeMillis <= ? - and occupancyTypeId not in (select occupancyTypeId from OccupancyTypeFields) - and occupancyTypeId not in (select occupancyTypeId from OccupancyTypePrints) - and occupancyTypeId not in (select occupancyTypeId from LotOccupancies) - and occupancyTypeId not in (select occupancyTypeId from Fees)` - ) - .run(recordDelete_timeMillisMin).changes; - - /* - * Lot Occupant Types - */ - - purgedRecordCount += database - .prepare( - `delete from LotOccupantTypes - where recordDelete_timeMillis <= ? - and lotOccupantTypeId not in (select lotOccupantTypeId from LotOccupancyOccupants)` - ) - .run(recordDelete_timeMillisMin).changes; - - /* - * Lot Comments - */ - - inactivedRecordCount += database - .prepare( - `update LotComments - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where recordDelete_timeMillis is null - and lotId in (select lotId from Lots where recordDelete_timeMillis is not null)` - ) - .run(requestSession.user.userName, rightNowMillis).changes; - - purgedRecordCount += database - .prepare("delete from LotComments where recordDelete_timeMillis <= ?") - .run(recordDelete_timeMillisMin).changes; - - /* - * Lot Fields - */ - - inactivedRecordCount += database - .prepare( - `update LotFields - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where recordDelete_timeMillis is null - and lotId in (select lotId from Lots where recordDelete_timeMillis is not null)` - ) - .run(requestSession.user.userName, rightNowMillis).changes; - - purgedRecordCount += database - .prepare("delete from LotFields where recordDelete_timeMillis <= ?") - .run(recordDelete_timeMillisMin).changes; - - /* - * Lots - */ - - inactivedRecordCount += database - .prepare( - `update Lots - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where recordDelete_timeMillis is null - and mapId in (select mapId from Maps where recordDelete_timeMillis is not null)` - ) - .run(requestSession.user.userName, rightNowMillis).changes; - - purgedRecordCount += database - .prepare( - `delete from Lots - where recordDelete_timeMillis <= ? - and lotId not in (select lotId from LotComments) - and lotId not in (select lotId from LotFields) - and lotId not in (select lotId from LotOccupancies) - and lotId not in (select lotId from WorkOrderLots)` - ) - .run(recordDelete_timeMillisMin).changes; - - /* - * Lot Statuses - */ - - purgedRecordCount += database - .prepare( - `delete from LotStatuses - where recordDelete_timeMillis <= ? - and lotStatusId not in (select lotStatusId from Lots)` - ) - .run(recordDelete_timeMillisMin).changes; - - /* - * Lot Type Fields - */ - - inactivedRecordCount += database - .prepare( - `update LotTypeFields - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where recordDelete_timeMillis is null - and lotTypeId in (select lotTypeId from LotTypes where recordDelete_timeMillis is not null)` - ) - .run(requestSession.user.userName, rightNowMillis).changes; - - purgedRecordCount += database - .prepare( - `delete from LotTypeFields - where recordDelete_timeMillis <= ? - and lotTypeFieldId not in (select lotTypeFieldId from LotFields)` - ) - .run(recordDelete_timeMillisMin).changes; - - /* - * Lot Types - */ - - purgedRecordCount += database - .prepare( - `delete from LotTypes - where recordDelete_timeMillis <= ? - and lotTypeId not in (select lotTypeId from Lots)` - ) - .run(recordDelete_timeMillisMin).changes; - - database.close(); - - return { - inactivedRecordCount, - purgedRecordCount - }; +import sqlite from 'better-sqlite3' + +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js' + +import * as configFunctions from '../functions.config.js' + +import type * as recordTypes from '../../types/recordTypes' + +export function cleanupDatabase(requestSession: recordTypes.PartialSession): { + inactivedRecordCount: number + purgedRecordCount: number +} { + const database = sqlite(databasePath) + + const rightNowMillis = Date.now() + const recordDeleteTimeMillisMin = + rightNowMillis - + configFunctions.getProperty('settings.adminCleanup.recordDeleteAgeDays') * + 86_400 * + 1000 + + let inactivedRecordCount = 0 + let purgedRecordCount = 0 + + /* + * Work Order Comments + */ + + inactivedRecordCount += database + .prepare( + `update WorkOrderComments + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where recordDelete_timeMillis is null + and workOrderId in ( + select workOrderId from WorkOrders where recordDelete_timeMillis is not null)` + ) + .run(requestSession.user!.userName, rightNowMillis).changes + + purgedRecordCount += database + .prepare('delete from WorkOrderComments where recordDelete_timeMillis <= ?') + .run(recordDeleteTimeMillisMin).changes + + /* + * Work Order Lot Occupancies + */ + + inactivedRecordCount += database + .prepare( + `update WorkOrderLotOccupancies + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where recordDelete_timeMillis is null + and workOrderId in ( + select workOrderId from WorkOrders where recordDelete_timeMillis is not null)` + ) + .run(requestSession.user!.userName, rightNowMillis).changes + + purgedRecordCount += database + .prepare( + 'delete from WorkOrderLotOccupancies where recordDelete_timeMillis <= ?' + ) + .run(recordDeleteTimeMillisMin).changes + + /* + * Work Order Lots + */ + + inactivedRecordCount += database + .prepare( + `update WorkOrderLots + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where recordDelete_timeMillis is null + and workOrderId in ( + select workOrderId from WorkOrders where recordDelete_timeMillis is not null)` + ) + .run(requestSession.user!.userName, rightNowMillis).changes + + purgedRecordCount += database + .prepare('delete from WorkOrderLots where recordDelete_timeMillis <= ?') + .run(recordDeleteTimeMillisMin).changes + + /* + * Work Order Milestones + */ + + inactivedRecordCount += database + .prepare( + `update WorkOrderMilestones + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where recordDelete_timeMillis is null + and workOrderId in ( + select workOrderId from WorkOrders where recordDelete_timeMillis is not null)` + ) + .run(requestSession.user!.userName, rightNowMillis).changes + + purgedRecordCount += database + .prepare( + 'delete from WorkOrderMilestones where recordDelete_timeMillis <= ?' + ) + .run(recordDeleteTimeMillisMin).changes + + /* + * Work Orders + */ + + purgedRecordCount += database + .prepare( + `delete from WorkOrders + where recordDelete_timeMillis <= ? + and workOrderId not in (select workOrderId from WorkOrderComments) + and workOrderId not in (select workOrderId from WorkOrderLotOccupancies) + and workOrderId not in (select workOrderId from WorkOrderLots) + and workOrderId not in (select workOrderId from WorkOrderMilestones)` + ) + .run(recordDeleteTimeMillisMin).changes + + /* + * Work Order Milestone Types + */ + + purgedRecordCount += database + .prepare( + `delete from WorkOrderMilestoneTypes + where recordDelete_timeMillis <= ? + and workOrderMilestoneTypeId not in ( + select workOrderMilestoneTypeId from WorkOrderMilestones)` + ) + .run(recordDeleteTimeMillisMin).changes + + /* + * Work Order Types + */ + + purgedRecordCount += database + .prepare( + `delete from WorkOrderTypes + where recordDelete_timeMillis <= ? + and workOrderTypeId not in (select workOrderTypeId from WorkOrders)` + ) + .run(recordDeleteTimeMillisMin).changes + + /* + * Lot Occupancy Comments + */ + + inactivedRecordCount += database + .prepare( + `update LotOccupancyComments + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where recordDelete_timeMillis is null + and lotOccupancyId in ( + select lotOccupancyId from LotOccupancies where recordDelete_timeMillis is not null)` + ) + .run(requestSession.user!.userName, rightNowMillis).changes + + purgedRecordCount += database + .prepare( + 'delete from LotOccupancyComments where recordDelete_timeMillis <= ?' + ) + .run(recordDeleteTimeMillisMin).changes + + /* + * Lot Occupancy Fields + */ + + inactivedRecordCount += database + .prepare( + `update LotOccupancyFields + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where recordDelete_timeMillis is null + and lotOccupancyId in (select lotOccupancyId from LotOccupancies where recordDelete_timeMillis is not null)` + ) + .run(requestSession.user!.userName, rightNowMillis).changes + + purgedRecordCount += database + .prepare( + 'delete from LotOccupancyFields where recordDelete_timeMillis <= ?' + ) + .run(recordDeleteTimeMillisMin).changes + + /* + * Lot Occupancy Occupants + */ + + inactivedRecordCount += database + .prepare( + `update LotOccupancyOccupants + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where recordDelete_timeMillis is null + and lotOccupancyId in (select lotOccupancyId from LotOccupancies where recordDelete_timeMillis is not null)` + ) + .run(requestSession.user!.userName, rightNowMillis).changes + + purgedRecordCount += database + .prepare( + 'delete from LotOccupancyOccupants where recordDelete_timeMillis <= ?' + ) + .run(recordDeleteTimeMillisMin).changes + + /* + * Lot Occupancy Fees/Transactions + * - Maintain financials, do not delete related. + */ + + purgedRecordCount += database + .prepare('delete from LotOccupancyFees where recordDelete_timeMillis <= ?') + .run(recordDeleteTimeMillisMin).changes + + purgedRecordCount += database + .prepare( + 'delete from LotOccupancyTransactions where recordDelete_timeMillis <= ?' + ) + .run(recordDeleteTimeMillisMin).changes + + /* + * Lot Occupancies + */ + + purgedRecordCount += database + .prepare( + `delete from LotOccupancies + where recordDelete_timeMillis <= ? + and lotOccupancyId not in (select lotOccupancyId from LotOccupancyComments) + and lotOccupancyId not in (select lotOccupancyId from LotOccupancyFees) + and lotOccupancyId not in (select lotOccupancyId from LotOccupancyFields) + and lotOccupancyId not in (select lotOccupancyId from LotOccupancyOccupants) + and lotOccupancyId not in (select lotOccupancyId from LotOccupancyTransactions) + and lotOccupancyId not in (select lotOccupancyId from WorkOrderLotOccupancies)` + ) + .run(recordDeleteTimeMillisMin).changes + + /* + * Fees + */ + + inactivedRecordCount += database + .prepare( + `update Fees + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where recordDelete_timeMillis is null + and feeCategoryId in (select feeCategoryId from FeeCategories where recordDelete_timeMillis is not null)` + ) + .run(requestSession.user!.userName, rightNowMillis).changes + + purgedRecordCount += database + .prepare( + `delete from Fees + where recordDelete_timeMillis <= ? + and feeId not in (select feeId from LotOccupancyFees)` + ) + .run(recordDeleteTimeMillisMin).changes + + /* + * Fee Categories + */ + + purgedRecordCount += database + .prepare( + `delete from FeeCategories + where recordDelete_timeMillis <= ? + and feeCategoryId not in (select feeCategoryId from Fees)` + ) + .run(recordDeleteTimeMillisMin).changes + + /* + * Occupancy Type Fields + */ + + inactivedRecordCount += database + .prepare( + `update OccupancyTypeFields + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where recordDelete_timeMillis is null + and occupancyTypeId in (select occupancyTypeId from OccupancyTypes where recordDelete_timeMillis is not null)` + ) + .run(requestSession.user!.userName, rightNowMillis).changes + + purgedRecordCount += database + .prepare( + `delete from OccupancyTypeFields + where recordDelete_timeMillis <= ? + and occupancyTypeFieldId not in (select occupancyTypeFieldId from LotOccupancyFields)` + ) + .run(recordDeleteTimeMillisMin).changes + + /* + * Occupancy Type Prints + */ + + inactivedRecordCount += database + .prepare( + `update OccupancyTypePrints + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where recordDelete_timeMillis is null + and occupancyTypeId in (select occupancyTypeId from OccupancyTypes where recordDelete_timeMillis is not null)` + ) + .run(requestSession.user!.userName, rightNowMillis).changes + + purgedRecordCount += database + .prepare( + 'delete from OccupancyTypePrints where recordDelete_timeMillis <= ?' + ) + .run(recordDeleteTimeMillisMin).changes + + /* + * Occupancy Types + */ + + purgedRecordCount += database + .prepare( + `delete from OccupancyTypes + where recordDelete_timeMillis <= ? + and occupancyTypeId not in (select occupancyTypeId from OccupancyTypeFields) + and occupancyTypeId not in (select occupancyTypeId from OccupancyTypePrints) + and occupancyTypeId not in (select occupancyTypeId from LotOccupancies) + and occupancyTypeId not in (select occupancyTypeId from Fees)` + ) + .run(recordDeleteTimeMillisMin).changes + + /* + * Lot Occupant Types + */ + + purgedRecordCount += database + .prepare( + `delete from LotOccupantTypes + where recordDelete_timeMillis <= ? + and lotOccupantTypeId not in (select lotOccupantTypeId from LotOccupancyOccupants)` + ) + .run(recordDeleteTimeMillisMin).changes + + /* + * Lot Comments + */ + + inactivedRecordCount += database + .prepare( + `update LotComments + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where recordDelete_timeMillis is null + and lotId in (select lotId from Lots where recordDelete_timeMillis is not null)` + ) + .run(requestSession.user!.userName, rightNowMillis).changes + + purgedRecordCount += database + .prepare('delete from LotComments where recordDelete_timeMillis <= ?') + .run(recordDeleteTimeMillisMin).changes + + /* + * Lot Fields + */ + + inactivedRecordCount += database + .prepare( + `update LotFields + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where recordDelete_timeMillis is null + and lotId in (select lotId from Lots where recordDelete_timeMillis is not null)` + ) + .run(requestSession.user!.userName, rightNowMillis).changes + + purgedRecordCount += database + .prepare('delete from LotFields where recordDelete_timeMillis <= ?') + .run(recordDeleteTimeMillisMin).changes + + /* + * Lots + */ + + inactivedRecordCount += database + .prepare( + `update Lots + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where recordDelete_timeMillis is null + and mapId in (select mapId from Maps where recordDelete_timeMillis is not null)` + ) + .run(requestSession.user!.userName, rightNowMillis).changes + + purgedRecordCount += database + .prepare( + `delete from Lots + where recordDelete_timeMillis <= ? + and lotId not in (select lotId from LotComments) + and lotId not in (select lotId from LotFields) + and lotId not in (select lotId from LotOccupancies) + and lotId not in (select lotId from WorkOrderLots)` + ) + .run(recordDeleteTimeMillisMin).changes + + /* + * Lot Statuses + */ + + purgedRecordCount += database + .prepare( + `delete from LotStatuses + where recordDelete_timeMillis <= ? + and lotStatusId not in (select lotStatusId from Lots)` + ) + .run(recordDeleteTimeMillisMin).changes + + /* + * Lot Type Fields + */ + + inactivedRecordCount += database + .prepare( + `update LotTypeFields + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where recordDelete_timeMillis is null + and lotTypeId in (select lotTypeId from LotTypes where recordDelete_timeMillis is not null)` + ) + .run(requestSession.user!.userName, rightNowMillis).changes + + purgedRecordCount += database + .prepare( + `delete from LotTypeFields + where recordDelete_timeMillis <= ? + and lotTypeFieldId not in (select lotTypeFieldId from LotFields)` + ) + .run(recordDeleteTimeMillisMin).changes + + /* + * Lot Types + */ + + purgedRecordCount += database + .prepare( + `delete from LotTypes + where recordDelete_timeMillis <= ? + and lotTypeId not in (select lotTypeId from Lots)` + ) + .run(recordDeleteTimeMillisMin).changes + + database.close() + + return { + inactivedRecordCount, + purgedRecordCount + } } -export default cleanupDatabase; +export default cleanupDatabase diff --git a/helpers/lotOccupancyDB/closeWorkOrder.d.ts b/helpers/lotOccupancyDB/closeWorkOrder.d.ts index 11052dc1..4faed7b7 100644 --- a/helpers/lotOccupancyDB/closeWorkOrder.d.ts +++ b/helpers/lotOccupancyDB/closeWorkOrder.d.ts @@ -1,4 +1,4 @@ -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes'; interface AddWorkOrderForm { workOrderId: number | string; workOrderCloseDateString?: string; diff --git a/helpers/lotOccupancyDB/closeWorkOrder.js b/helpers/lotOccupancyDB/closeWorkOrder.js index cfc6a9d3..4aa832c4 100644 --- a/helpers/lotOccupancyDB/closeWorkOrder.js +++ b/helpers/lotOccupancyDB/closeWorkOrder.js @@ -1,6 +1,6 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; -import { dateStringToInteger, dateToInteger } from "@cityssm/expressjs-server-js/dateTimeFns.js"; +import sqlite from 'better-sqlite3'; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'; +import { dateStringToInteger, dateToInteger } from '@cityssm/expressjs-server-js/dateTimeFns.js'; export function closeWorkOrder(workOrderForm, requestSession) { const database = sqlite(databasePath); const rightNow = new Date(); diff --git a/helpers/lotOccupancyDB/closeWorkOrder.ts b/helpers/lotOccupancyDB/closeWorkOrder.ts index c745d821..0f31c2c9 100644 --- a/helpers/lotOccupancyDB/closeWorkOrder.ts +++ b/helpers/lotOccupancyDB/closeWorkOrder.ts @@ -1,44 +1,47 @@ -import sqlite from "better-sqlite3"; +import sqlite from 'better-sqlite3' -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js' -import { dateStringToInteger, dateToInteger } from "@cityssm/expressjs-server-js/dateTimeFns.js"; +import { + dateStringToInteger, + dateToInteger +} from '@cityssm/expressjs-server-js/dateTimeFns.js' -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes' interface AddWorkOrderForm { - workOrderId: number | string; - workOrderCloseDateString?: string; + workOrderId: number | string + workOrderCloseDateString?: string } export function closeWorkOrder( - workOrderForm: AddWorkOrderForm, - requestSession: recordTypes.PartialSession + workOrderForm: AddWorkOrderForm, + requestSession: recordTypes.PartialSession ): boolean { - const database = sqlite(databasePath); + const database = sqlite(databasePath) - const rightNow = new Date(); + const rightNow = new Date() - const result = database - .prepare( - `update WorkOrders + const result = database + .prepare( + `update WorkOrders set workOrderCloseDate = ?, recordUpdate_userName = ?, recordUpdate_timeMillis = ? where workOrderId = ?` - ) - .run( - workOrderForm.workOrderCloseDateString - ? dateStringToInteger(workOrderForm.workOrderCloseDateString) - : dateToInteger(new Date()), - requestSession.user.userName, - rightNow.getTime(), - workOrderForm.workOrderId - ); + ) + .run( + workOrderForm.workOrderCloseDateString + ? dateStringToInteger(workOrderForm.workOrderCloseDateString) + : dateToInteger(new Date()), + requestSession.user!.userName, + rightNow.getTime(), + workOrderForm.workOrderId + ) - database.close(); + database.close() - return result.changes > 0; + return result.changes > 0 } -export default closeWorkOrder; +export default closeWorkOrder diff --git a/helpers/lotOccupancyDB/completeWorkOrderMilestone.d.ts b/helpers/lotOccupancyDB/completeWorkOrderMilestone.d.ts index 8b1f3d5b..1eb468c7 100644 --- a/helpers/lotOccupancyDB/completeWorkOrderMilestone.d.ts +++ b/helpers/lotOccupancyDB/completeWorkOrderMilestone.d.ts @@ -1,4 +1,4 @@ -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes'; interface CompleteWorkOrderMilestoneForm { workOrderMilestoneId: string | number; workOrderMilestoneCompletionDateString?: string; diff --git a/helpers/lotOccupancyDB/completeWorkOrderMilestone.js b/helpers/lotOccupancyDB/completeWorkOrderMilestone.js index 8c5296f2..ab5013f8 100644 --- a/helpers/lotOccupancyDB/completeWorkOrderMilestone.js +++ b/helpers/lotOccupancyDB/completeWorkOrderMilestone.js @@ -1,6 +1,6 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; -import { dateStringToInteger, dateToInteger, dateToTimeInteger, timeStringToInteger } from "@cityssm/expressjs-server-js/dateTimeFns.js"; +import sqlite from 'better-sqlite3'; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'; +import { dateStringToInteger, dateToInteger, dateToTimeInteger, timeStringToInteger } from '@cityssm/expressjs-server-js/dateTimeFns.js'; export function completeWorkOrderMilestone(milestoneForm, requestSession) { const rightNow = new Date(); const database = sqlite(databasePath); diff --git a/helpers/lotOccupancyDB/completeWorkOrderMilestone.ts b/helpers/lotOccupancyDB/completeWorkOrderMilestone.ts index c454f40c..0f081de8 100644 --- a/helpers/lotOccupancyDB/completeWorkOrderMilestone.ts +++ b/helpers/lotOccupancyDB/completeWorkOrderMilestone.ts @@ -1,54 +1,60 @@ -import sqlite from "better-sqlite3"; +/* eslint-disable @typescript-eslint/indent */ -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import sqlite from 'better-sqlite3' + +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js' import { - dateStringToInteger, - dateToInteger, - dateToTimeInteger, - timeStringToInteger -} from "@cityssm/expressjs-server-js/dateTimeFns.js"; + dateStringToInteger, + dateToInteger, + dateToTimeInteger, + timeStringToInteger +} from '@cityssm/expressjs-server-js/dateTimeFns.js' -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes' interface CompleteWorkOrderMilestoneForm { - workOrderMilestoneId: string | number; - workOrderMilestoneCompletionDateString?: string; - workOrderMilestoneCompletionTimeString?: string; + workOrderMilestoneId: string | number + workOrderMilestoneCompletionDateString?: string + workOrderMilestoneCompletionTimeString?: string } export function completeWorkOrderMilestone( - milestoneForm: CompleteWorkOrderMilestoneForm, - requestSession: recordTypes.PartialSession + milestoneForm: CompleteWorkOrderMilestoneForm, + requestSession: recordTypes.PartialSession ): boolean { - const rightNow = new Date(); + const rightNow = new Date() - const database = sqlite(databasePath); + const database = sqlite(databasePath) - const result = database - .prepare( - `update WorkOrderMilestones + const result = database + .prepare( + `update WorkOrderMilestones set workOrderMilestoneCompletionDate = ?, workOrderMilestoneCompletionTime = ?, recordUpdate_userName = ?, recordUpdate_timeMillis = ? where workOrderMilestoneId = ?` - ) - .run( + ) + .run( + milestoneForm.workOrderMilestoneCompletionDateString + ? dateStringToInteger( milestoneForm.workOrderMilestoneCompletionDateString - ? dateStringToInteger(milestoneForm.workOrderMilestoneCompletionDateString) - : dateToInteger(rightNow), + ) + : dateToInteger(rightNow), + milestoneForm.workOrderMilestoneCompletionTimeString + ? timeStringToInteger( milestoneForm.workOrderMilestoneCompletionTimeString - ? timeStringToInteger(milestoneForm.workOrderMilestoneCompletionTimeString) - : dateToTimeInteger(rightNow), - requestSession.user.userName, - rightNow.getTime(), - milestoneForm.workOrderMilestoneId - ); + ) + : dateToTimeInteger(rightNow), + requestSession.user!.userName, + rightNow.getTime(), + milestoneForm.workOrderMilestoneId + ) - database.close(); + database.close() - return result.changes > 0; + return result.changes > 0 } -export default completeWorkOrderMilestone; +export default completeWorkOrderMilestone diff --git a/helpers/lotOccupancyDB/copyLotOccupancy.d.ts b/helpers/lotOccupancyDB/copyLotOccupancy.d.ts index 75414278..130fe7ee 100644 --- a/helpers/lotOccupancyDB/copyLotOccupancy.d.ts +++ b/helpers/lotOccupancyDB/copyLotOccupancy.d.ts @@ -1,3 +1,3 @@ -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes'; export declare function copyLotOccupancy(oldLotOccupancyId: number | string, requestSession: recordTypes.PartialSession): number; export default copyLotOccupancy; diff --git a/helpers/lotOccupancyDB/copyLotOccupancy.js b/helpers/lotOccupancyDB/copyLotOccupancy.js index f3ebca44..4074d291 100644 --- a/helpers/lotOccupancyDB/copyLotOccupancy.js +++ b/helpers/lotOccupancyDB/copyLotOccupancy.js @@ -1,20 +1,20 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; -import { getLotOccupancy } from "./getLotOccupancy.js"; -import { addLotOccupancy } from "./addLotOccupancy.js"; -import { addLotOccupancyOccupant } from "./addLotOccupancyOccupant.js"; -import { dateToString } from "@cityssm/expressjs-server-js/dateTimeFns.js"; +import sqlite from 'better-sqlite3'; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'; +import { getLotOccupancy } from './getLotOccupancy.js'; +import { addLotOccupancy } from './addLotOccupancy.js'; +import { addLotOccupancyOccupant } from './addLotOccupancyOccupant.js'; +import { dateToString } from '@cityssm/expressjs-server-js/dateTimeFns.js'; export function copyLotOccupancy(oldLotOccupancyId, requestSession) { const database = sqlite(databasePath); const oldLotOccupancy = getLotOccupancy(oldLotOccupancyId, database); const newLotOccupancyId = addLotOccupancy({ - lotId: oldLotOccupancy.lotId || "", + lotId: oldLotOccupancy.lotId ?? '', occupancyTypeId: oldLotOccupancy.occupancyTypeId, occupancyStartDateString: dateToString(new Date()), - occupancyEndDateString: "" + occupancyEndDateString: '' }, requestSession, database); const rightNowMillis = Date.now(); - for (const occupancyField of oldLotOccupancy.lotOccupancyFields) { + for (const occupancyField of oldLotOccupancy.lotOccupancyFields ?? []) { database .prepare(`insert into LotOccupancyFields ( lotOccupancyId, occupancyTypeFieldId, lotOccupancyFieldValue, @@ -23,7 +23,7 @@ export function copyLotOccupancy(oldLotOccupancyId, requestSession) { values (?, ?, ?, ?, ?, ?, ?)`) .run(newLotOccupancyId, occupancyField.occupancyTypeFieldId, occupancyField.lotOccupancyFieldValue, requestSession.user.userName, rightNowMillis, requestSession.user.userName, rightNowMillis); } - for (const occupant of oldLotOccupancy.lotOccupancyOccupants) { + for (const occupant of oldLotOccupancy.lotOccupancyOccupants ?? []) { addLotOccupancyOccupant({ lotOccupancyId: newLotOccupancyId, lotOccupantTypeId: occupant.lotOccupantTypeId, diff --git a/helpers/lotOccupancyDB/copyLotOccupancy.ts b/helpers/lotOccupancyDB/copyLotOccupancy.ts index d31c3033..85ff2810 100644 --- a/helpers/lotOccupancyDB/copyLotOccupancy.ts +++ b/helpers/lotOccupancyDB/copyLotOccupancy.ts @@ -1,86 +1,86 @@ -import sqlite from "better-sqlite3"; +import sqlite from 'better-sqlite3' -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js' -import { getLotOccupancy } from "./getLotOccupancy.js"; -import { addLotOccupancy } from "./addLotOccupancy.js"; -import { addLotOccupancyOccupant } from "./addLotOccupancyOccupant.js"; +import { getLotOccupancy } from './getLotOccupancy.js' +import { addLotOccupancy } from './addLotOccupancy.js' +import { addLotOccupancyOccupant } from './addLotOccupancyOccupant.js' -import { dateToString } from "@cityssm/expressjs-server-js/dateTimeFns.js"; +import { dateToString } from '@cityssm/expressjs-server-js/dateTimeFns.js' -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes' export function copyLotOccupancy( - oldLotOccupancyId: number | string, - requestSession: recordTypes.PartialSession + oldLotOccupancyId: number | string, + requestSession: recordTypes.PartialSession ): number { - const database = sqlite(databasePath); + const database = sqlite(databasePath) - const oldLotOccupancy = getLotOccupancy(oldLotOccupancyId, database); + const oldLotOccupancy = getLotOccupancy(oldLotOccupancyId, database)! - const newLotOccupancyId = addLotOccupancy( - { - lotId: oldLotOccupancy.lotId || "", - occupancyTypeId: oldLotOccupancy.occupancyTypeId, - occupancyStartDateString: dateToString(new Date()), - occupancyEndDateString: "" - }, - requestSession, - database - ); + const newLotOccupancyId = addLotOccupancy( + { + lotId: oldLotOccupancy.lotId ?? '', + occupancyTypeId: oldLotOccupancy.occupancyTypeId!, + occupancyStartDateString: dateToString(new Date()), + occupancyEndDateString: '' + }, + requestSession, + database + ) - /* - * Copy Fields - */ + /* + * Copy Fields + */ - const rightNowMillis = Date.now(); + const rightNowMillis = Date.now() - for (const occupancyField of oldLotOccupancy.lotOccupancyFields) { - database - .prepare( - `insert into LotOccupancyFields ( + for (const occupancyField of oldLotOccupancy.lotOccupancyFields ?? []) { + database + .prepare( + `insert into LotOccupancyFields ( lotOccupancyId, occupancyTypeFieldId, lotOccupancyFieldValue, recordCreate_userName, recordCreate_timeMillis, recordUpdate_userName, recordUpdate_timeMillis) values (?, ?, ?, ?, ?, ?, ?)` - ) - .run( - newLotOccupancyId, - occupancyField.occupancyTypeFieldId, - occupancyField.lotOccupancyFieldValue, - requestSession.user.userName, - rightNowMillis, - requestSession.user.userName, - rightNowMillis - ); - } + ) + .run( + newLotOccupancyId, + occupancyField.occupancyTypeFieldId, + occupancyField.lotOccupancyFieldValue, + requestSession.user!.userName, + rightNowMillis, + requestSession.user!.userName, + rightNowMillis + ) + } - /* - * Copy Occupants - */ + /* + * Copy Occupants + */ - for (const occupant of oldLotOccupancy.lotOccupancyOccupants) { - addLotOccupancyOccupant( - { - lotOccupancyId: newLotOccupancyId, - lotOccupantTypeId: occupant.lotOccupantTypeId, - occupantName: occupant.occupantName, - occupantAddress1: occupant.occupantAddress1, - occupantAddress2: occupant.occupantAddress2, - occupantCity: occupant.occupantCity, - occupantProvince: occupant.occupantProvince, - occupantPostalCode: occupant.occupantPostalCode, - occupantPhoneNumber: occupant.occupantPhoneNumber, - occupantEmailAddress: occupant.occupantEmailAddress - }, - requestSession, - database - ); - } + for (const occupant of oldLotOccupancy.lotOccupancyOccupants ?? []) { + addLotOccupancyOccupant( + { + lotOccupancyId: newLotOccupancyId, + lotOccupantTypeId: occupant.lotOccupantTypeId!, + occupantName: occupant.occupantName!, + occupantAddress1: occupant.occupantAddress1!, + occupantAddress2: occupant.occupantAddress2!, + occupantCity: occupant.occupantCity!, + occupantProvince: occupant.occupantProvince!, + occupantPostalCode: occupant.occupantPostalCode!, + occupantPhoneNumber: occupant.occupantPhoneNumber!, + occupantEmailAddress: occupant.occupantEmailAddress! + }, + requestSession, + database + ) + } - database.close(); + database.close() - return newLotOccupancyId; + return newLotOccupancyId } -export default copyLotOccupancy; +export default copyLotOccupancy diff --git a/helpers/lotOccupancyDB/deleteLotField.d.ts b/helpers/lotOccupancyDB/deleteLotField.d.ts index 181a01e1..2186f88e 100644 --- a/helpers/lotOccupancyDB/deleteLotField.d.ts +++ b/helpers/lotOccupancyDB/deleteLotField.d.ts @@ -1,4 +1,4 @@ -import sqlite from "better-sqlite3"; -import type * as recordTypes from "../../types/recordTypes"; +import sqlite from 'better-sqlite3'; +import type * as recordTypes from '../../types/recordTypes'; export declare function deleteLotField(lotId: number | string, lotTypeFieldId: number | string, requestSession: recordTypes.PartialSession, connectedDatabase?: sqlite.Database): boolean; export default deleteLotField; diff --git a/helpers/lotOccupancyDB/deleteLotField.js b/helpers/lotOccupancyDB/deleteLotField.js index 2071338b..5c1d8fb1 100644 --- a/helpers/lotOccupancyDB/deleteLotField.js +++ b/helpers/lotOccupancyDB/deleteLotField.js @@ -1,7 +1,7 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import sqlite from 'better-sqlite3'; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'; export function deleteLotField(lotId, lotTypeFieldId, requestSession, connectedDatabase) { - const database = connectedDatabase || sqlite(databasePath); + const database = connectedDatabase ?? sqlite(databasePath); const rightNowMillis = Date.now(); const result = database .prepare(`update LotFields diff --git a/helpers/lotOccupancyDB/deleteLotField.ts b/helpers/lotOccupancyDB/deleteLotField.ts index 2ba4e3f0..309b5703 100644 --- a/helpers/lotOccupancyDB/deleteLotField.ts +++ b/helpers/lotOccupancyDB/deleteLotField.ts @@ -1,34 +1,34 @@ -import sqlite from "better-sqlite3"; +import sqlite from 'better-sqlite3' -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js' -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes' export function deleteLotField( - lotId: number | string, - lotTypeFieldId: number | string, - requestSession: recordTypes.PartialSession, - connectedDatabase?: sqlite.Database + lotId: number | string, + lotTypeFieldId: number | string, + requestSession: recordTypes.PartialSession, + connectedDatabase?: sqlite.Database ): boolean { - const database = connectedDatabase || sqlite(databasePath); + const database = connectedDatabase ?? sqlite(databasePath) - const rightNowMillis = Date.now(); + const rightNowMillis = Date.now() - const result = database - .prepare( - `update LotFields + const result = database + .prepare( + `update LotFields set recordDelete_userName = ?, recordDelete_timeMillis = ? where lotId = ? and lotTypeFieldId = ?` - ) - .run(requestSession.user.userName, rightNowMillis, lotId, lotTypeFieldId); + ) + .run(requestSession.user!.userName, rightNowMillis, lotId, lotTypeFieldId) - if (!connectedDatabase) { - database.close(); - } + if (!connectedDatabase) { + database.close() + } - return result.changes > 0; + return result.changes > 0 } -export default deleteLotField; +export default deleteLotField diff --git a/helpers/lotOccupancyDB/deleteLotOccupancyFee.d.ts b/helpers/lotOccupancyDB/deleteLotOccupancyFee.d.ts index d8ee0b68..c56a79f8 100644 --- a/helpers/lotOccupancyDB/deleteLotOccupancyFee.d.ts +++ b/helpers/lotOccupancyDB/deleteLotOccupancyFee.d.ts @@ -1,3 +1,3 @@ -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes'; export declare function deleteLotOccupancyFee(lotOccupancyId: number | string, feeId: number | string, requestSession: recordTypes.PartialSession): boolean; export default deleteLotOccupancyFee; diff --git a/helpers/lotOccupancyDB/deleteLotOccupancyFee.js b/helpers/lotOccupancyDB/deleteLotOccupancyFee.js index 3c0b26cd..5581a8c3 100644 --- a/helpers/lotOccupancyDB/deleteLotOccupancyFee.js +++ b/helpers/lotOccupancyDB/deleteLotOccupancyFee.js @@ -1,14 +1,14 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import sqlite from 'better-sqlite3'; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'; export function deleteLotOccupancyFee(lotOccupancyId, feeId, requestSession) { const database = sqlite(databasePath); const rightNowMillis = Date.now(); const result = database .prepare(`update LotOccupancyFees - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where lotOccupancyId = ? - and feeId = ?`) + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where lotOccupancyId = ? + and feeId = ?`) .run(requestSession.user.userName, rightNowMillis, lotOccupancyId, feeId); database.close(); return result.changes > 0; diff --git a/helpers/lotOccupancyDB/deleteLotOccupancyFee.ts b/helpers/lotOccupancyDB/deleteLotOccupancyFee.ts index 67211e29..c89764f6 100644 --- a/helpers/lotOccupancyDB/deleteLotOccupancyFee.ts +++ b/helpers/lotOccupancyDB/deleteLotOccupancyFee.ts @@ -1,31 +1,31 @@ -import sqlite from "better-sqlite3"; +import sqlite from 'better-sqlite3' -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js' -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes' export function deleteLotOccupancyFee( - lotOccupancyId: number | string, - feeId: number | string, - requestSession: recordTypes.PartialSession + lotOccupancyId: number | string, + feeId: number | string, + requestSession: recordTypes.PartialSession ): boolean { - const database = sqlite(databasePath); + const database = sqlite(databasePath) - const rightNowMillis = Date.now(); + const rightNowMillis = Date.now() - const result = database - .prepare( - `update LotOccupancyFees - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where lotOccupancyId = ? - and feeId = ?` - ) - .run(requestSession.user.userName, rightNowMillis, lotOccupancyId, feeId); + const result = database + .prepare( + `update LotOccupancyFees + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where lotOccupancyId = ? + and feeId = ?` + ) + .run(requestSession.user!.userName, rightNowMillis, lotOccupancyId, feeId) - database.close(); + database.close() - return result.changes > 0; + return result.changes > 0 } -export default deleteLotOccupancyFee; +export default deleteLotOccupancyFee diff --git a/helpers/lotOccupancyDB/deleteLotOccupancyField.d.ts b/helpers/lotOccupancyDB/deleteLotOccupancyField.d.ts index 4206b911..cac43b2d 100644 --- a/helpers/lotOccupancyDB/deleteLotOccupancyField.d.ts +++ b/helpers/lotOccupancyDB/deleteLotOccupancyField.d.ts @@ -1,4 +1,4 @@ -import sqlite from "better-sqlite3"; -import type * as recordTypes from "../../types/recordTypes"; +import sqlite from 'better-sqlite3'; +import type * as recordTypes from '../../types/recordTypes'; export declare function deleteLotOccupancyField(lotOccupancyId: number | string, occupancyTypeFieldId: number | string, requestSession: recordTypes.PartialSession, connectedDatabase?: sqlite.Database): boolean; export default deleteLotOccupancyField; diff --git a/helpers/lotOccupancyDB/deleteLotOccupancyField.js b/helpers/lotOccupancyDB/deleteLotOccupancyField.js index 86e75079..1aac4949 100644 --- a/helpers/lotOccupancyDB/deleteLotOccupancyField.js +++ b/helpers/lotOccupancyDB/deleteLotOccupancyField.js @@ -1,14 +1,14 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import sqlite from 'better-sqlite3'; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'; export function deleteLotOccupancyField(lotOccupancyId, occupancyTypeFieldId, requestSession, connectedDatabase) { - const database = connectedDatabase || sqlite(databasePath); + const database = connectedDatabase ?? sqlite(databasePath); const rightNowMillis = Date.now(); const result = database .prepare(`update LotOccupancyFields - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where lotOccupancyId = ? - and occupancyTypeFieldId = ?`) + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where lotOccupancyId = ? + and occupancyTypeFieldId = ?`) .run(requestSession.user.userName, rightNowMillis, lotOccupancyId, occupancyTypeFieldId); if (!connectedDatabase) { database.close(); diff --git a/helpers/lotOccupancyDB/deleteLotOccupancyField.ts b/helpers/lotOccupancyDB/deleteLotOccupancyField.ts index e1b5e756..357a755d 100644 --- a/helpers/lotOccupancyDB/deleteLotOccupancyField.ts +++ b/helpers/lotOccupancyDB/deleteLotOccupancyField.ts @@ -1,34 +1,39 @@ -import sqlite from "better-sqlite3"; +import sqlite from 'better-sqlite3' -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js' -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes' export function deleteLotOccupancyField( - lotOccupancyId: number | string, - occupancyTypeFieldId: number | string, - requestSession: recordTypes.PartialSession, - connectedDatabase?: sqlite.Database + lotOccupancyId: number | string, + occupancyTypeFieldId: number | string, + requestSession: recordTypes.PartialSession, + connectedDatabase?: sqlite.Database ): boolean { - const database = connectedDatabase || sqlite(databasePath); + const database = connectedDatabase ?? sqlite(databasePath) - const rightNowMillis = Date.now(); + const rightNowMillis = Date.now() - const result = database - .prepare( - `update LotOccupancyFields - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where lotOccupancyId = ? - and occupancyTypeFieldId = ?` - ) - .run(requestSession.user.userName, rightNowMillis, lotOccupancyId, occupancyTypeFieldId); + const result = database + .prepare( + `update LotOccupancyFields + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where lotOccupancyId = ? + and occupancyTypeFieldId = ?` + ) + .run( + requestSession.user!.userName, + rightNowMillis, + lotOccupancyId, + occupancyTypeFieldId + ) - if (!connectedDatabase) { - database.close(); - } + if (!connectedDatabase) { + database.close() + } - return result.changes > 0; + return result.changes > 0 } -export default deleteLotOccupancyField; +export default deleteLotOccupancyField diff --git a/helpers/lotOccupancyDB/deleteLotOccupancyOccupant.d.ts b/helpers/lotOccupancyDB/deleteLotOccupancyOccupant.d.ts index e49fbee8..794e4ec0 100644 --- a/helpers/lotOccupancyDB/deleteLotOccupancyOccupant.d.ts +++ b/helpers/lotOccupancyDB/deleteLotOccupancyOccupant.d.ts @@ -1,3 +1,3 @@ -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes'; export declare function deleteLotOccupancyOccupant(lotOccupancyId: number | string, lotOccupantIndex: number | string, requestSession: recordTypes.PartialSession): boolean; export default deleteLotOccupancyOccupant; diff --git a/helpers/lotOccupancyDB/deleteLotOccupancyOccupant.js b/helpers/lotOccupancyDB/deleteLotOccupancyOccupant.js index 970e8d87..7e8e40fc 100644 --- a/helpers/lotOccupancyDB/deleteLotOccupancyOccupant.js +++ b/helpers/lotOccupancyDB/deleteLotOccupancyOccupant.js @@ -1,14 +1,14 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import sqlite from 'better-sqlite3'; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'; export function deleteLotOccupancyOccupant(lotOccupancyId, lotOccupantIndex, requestSession) { const database = sqlite(databasePath); const rightNowMillis = Date.now(); const result = database .prepare(`update LotOccupancyOccupants - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where lotOccupancyId = ? - and lotOccupantIndex = ?`) + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where lotOccupancyId = ? + and lotOccupantIndex = ?`) .run(requestSession.user.userName, rightNowMillis, lotOccupancyId, lotOccupantIndex); database.close(); return result.changes > 0; diff --git a/helpers/lotOccupancyDB/deleteLotOccupancyOccupant.ts b/helpers/lotOccupancyDB/deleteLotOccupancyOccupant.ts index d6fae85a..74c951ae 100644 --- a/helpers/lotOccupancyDB/deleteLotOccupancyOccupant.ts +++ b/helpers/lotOccupancyDB/deleteLotOccupancyOccupant.ts @@ -1,31 +1,36 @@ -import sqlite from "better-sqlite3"; +import sqlite from 'better-sqlite3' -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js' -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes' export function deleteLotOccupancyOccupant( - lotOccupancyId: number | string, - lotOccupantIndex: number | string, - requestSession: recordTypes.PartialSession + lotOccupancyId: number | string, + lotOccupantIndex: number | string, + requestSession: recordTypes.PartialSession ): boolean { - const database = sqlite(databasePath); + const database = sqlite(databasePath) - const rightNowMillis = Date.now(); + const rightNowMillis = Date.now() - const result = database - .prepare( - `update LotOccupancyOccupants - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where lotOccupancyId = ? - and lotOccupantIndex = ?` - ) - .run(requestSession.user.userName, rightNowMillis, lotOccupancyId, lotOccupantIndex); + const result = database + .prepare( + `update LotOccupancyOccupants + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where lotOccupancyId = ? + and lotOccupantIndex = ?` + ) + .run( + requestSession.user!.userName, + rightNowMillis, + lotOccupancyId, + lotOccupantIndex + ) - database.close(); + database.close() - return result.changes > 0; + return result.changes > 0 } -export default deleteLotOccupancyOccupant; +export default deleteLotOccupancyOccupant diff --git a/helpers/lotOccupancyDB/deleteLotOccupancyTransaction.d.ts b/helpers/lotOccupancyDB/deleteLotOccupancyTransaction.d.ts index 970d691b..879edde4 100644 --- a/helpers/lotOccupancyDB/deleteLotOccupancyTransaction.d.ts +++ b/helpers/lotOccupancyDB/deleteLotOccupancyTransaction.d.ts @@ -1,3 +1,3 @@ -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes'; export declare function deleteLotOccupancyTransaction(lotOccupancyId: number | string, transactionIndex: number | string, requestSession: recordTypes.PartialSession): boolean; export default deleteLotOccupancyTransaction; diff --git a/helpers/lotOccupancyDB/deleteLotOccupancyTransaction.js b/helpers/lotOccupancyDB/deleteLotOccupancyTransaction.js index 8059ad6a..aedd4e06 100644 --- a/helpers/lotOccupancyDB/deleteLotOccupancyTransaction.js +++ b/helpers/lotOccupancyDB/deleteLotOccupancyTransaction.js @@ -1,14 +1,14 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import sqlite from 'better-sqlite3'; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'; export function deleteLotOccupancyTransaction(lotOccupancyId, transactionIndex, requestSession) { const database = sqlite(databasePath); const rightNowMillis = Date.now(); const result = database .prepare(`update LotOccupancyTransactions - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where lotOccupancyId = ? - and transactionIndex = ?`) + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where lotOccupancyId = ? + and transactionIndex = ?`) .run(requestSession.user.userName, rightNowMillis, lotOccupancyId, transactionIndex); database.close(); return result.changes > 0; diff --git a/helpers/lotOccupancyDB/deleteLotOccupancyTransaction.ts b/helpers/lotOccupancyDB/deleteLotOccupancyTransaction.ts index c5ccde50..8b545121 100644 --- a/helpers/lotOccupancyDB/deleteLotOccupancyTransaction.ts +++ b/helpers/lotOccupancyDB/deleteLotOccupancyTransaction.ts @@ -1,31 +1,36 @@ -import sqlite from "better-sqlite3"; +import sqlite from 'better-sqlite3' -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js' -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes' export function deleteLotOccupancyTransaction( - lotOccupancyId: number | string, - transactionIndex: number | string, - requestSession: recordTypes.PartialSession + lotOccupancyId: number | string, + transactionIndex: number | string, + requestSession: recordTypes.PartialSession ): boolean { - const database = sqlite(databasePath); + const database = sqlite(databasePath) - const rightNowMillis = Date.now(); + const rightNowMillis = Date.now() - const result = database - .prepare( - `update LotOccupancyTransactions - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where lotOccupancyId = ? - and transactionIndex = ?` - ) - .run(requestSession.user.userName, rightNowMillis, lotOccupancyId, transactionIndex); + const result = database + .prepare( + `update LotOccupancyTransactions + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where lotOccupancyId = ? + and transactionIndex = ?` + ) + .run( + requestSession.user!.userName, + rightNowMillis, + lotOccupancyId, + transactionIndex + ) - database.close(); + database.close() - return result.changes > 0; + return result.changes > 0 } -export default deleteLotOccupancyTransaction; +export default deleteLotOccupancyTransaction diff --git a/helpers/lotOccupancyDB/deleteOccupancyTypePrint.d.ts b/helpers/lotOccupancyDB/deleteOccupancyTypePrint.d.ts index 6e460d73..b56f0683 100644 --- a/helpers/lotOccupancyDB/deleteOccupancyTypePrint.d.ts +++ b/helpers/lotOccupancyDB/deleteOccupancyTypePrint.d.ts @@ -1,3 +1,3 @@ -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes'; export declare function deleteOccupancyTypePrint(occupancyTypeId: number | string, printEJS: string, requestSession: recordTypes.PartialSession): boolean; export default deleteOccupancyTypePrint; diff --git a/helpers/lotOccupancyDB/deleteOccupancyTypePrint.js b/helpers/lotOccupancyDB/deleteOccupancyTypePrint.js index 98ce5011..db870918 100644 --- a/helpers/lotOccupancyDB/deleteOccupancyTypePrint.js +++ b/helpers/lotOccupancyDB/deleteOccupancyTypePrint.js @@ -1,18 +1,18 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; -import { clearCacheByTableName } from "../functions.cache.js"; +import sqlite from 'better-sqlite3'; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'; +import { clearCacheByTableName } from '../functions.cache.js'; export function deleteOccupancyTypePrint(occupancyTypeId, printEJS, requestSession) { const database = sqlite(databasePath); const rightNowMillis = Date.now(); const result = database .prepare(`update OccupancyTypePrints - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where occupancyTypeId = ? - and printEJS = ?`) + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where occupancyTypeId = ? + and printEJS = ?`) .run(requestSession.user.userName, rightNowMillis, occupancyTypeId, printEJS); database.close(); - clearCacheByTableName("OccupancyTypePrints"); + clearCacheByTableName('OccupancyTypePrints'); return result.changes > 0; } export default deleteOccupancyTypePrint; diff --git a/helpers/lotOccupancyDB/deleteOccupancyTypePrint.ts b/helpers/lotOccupancyDB/deleteOccupancyTypePrint.ts index 16edff4d..d39b6ea3 100644 --- a/helpers/lotOccupancyDB/deleteOccupancyTypePrint.ts +++ b/helpers/lotOccupancyDB/deleteOccupancyTypePrint.ts @@ -1,35 +1,40 @@ -import sqlite from "better-sqlite3"; +import sqlite from 'better-sqlite3' -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js' -import { clearCacheByTableName } from "../functions.cache.js"; +import { clearCacheByTableName } from '../functions.cache.js' -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes' export function deleteOccupancyTypePrint( - occupancyTypeId: number | string, - printEJS: string, - requestSession: recordTypes.PartialSession + occupancyTypeId: number | string, + printEJS: string, + requestSession: recordTypes.PartialSession ): boolean { - const database = sqlite(databasePath); + const database = sqlite(databasePath) - const rightNowMillis = Date.now(); + const rightNowMillis = Date.now() - const result = database - .prepare( - `update OccupancyTypePrints - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where occupancyTypeId = ? - and printEJS = ?` - ) - .run(requestSession.user.userName, rightNowMillis, occupancyTypeId, printEJS); + const result = database + .prepare( + `update OccupancyTypePrints + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where occupancyTypeId = ? + and printEJS = ?` + ) + .run( + requestSession.user!.userName, + rightNowMillis, + occupancyTypeId, + printEJS + ) - database.close(); + database.close() - clearCacheByTableName("OccupancyTypePrints"); + clearCacheByTableName('OccupancyTypePrints') - return result.changes > 0; + return result.changes > 0 } -export default deleteOccupancyTypePrint; +export default deleteOccupancyTypePrint diff --git a/helpers/lotOccupancyDB/deleteRecord.d.ts b/helpers/lotOccupancyDB/deleteRecord.d.ts index ad6eade9..1acafc86 100644 --- a/helpers/lotOccupancyDB/deleteRecord.d.ts +++ b/helpers/lotOccupancyDB/deleteRecord.d.ts @@ -1,4 +1,4 @@ -import type * as recordTypes from "../../types/recordTypes"; -declare type RecordTable = "FeeCategories" | "Fees" | "Lots" | "LotComments" | "LotOccupancies" | "LotOccupancyComments" | "LotOccupantTypes" | "LotStatuses" | "LotTypes" | "LotTypeFields" | "Maps" | "OccupancyTypes" | "OccupancyTypeFields" | "WorkOrders" | "WorkOrderComments" | "WorkOrderMilestones" | "WorkOrderMilestoneTypes" | "WorkOrderTypes"; +import type * as recordTypes from '../../types/recordTypes'; +declare type RecordTable = 'FeeCategories' | 'Fees' | 'Lots' | 'LotComments' | 'LotOccupancies' | 'LotOccupancyComments' | 'LotOccupantTypes' | 'LotStatuses' | 'LotTypes' | 'LotTypeFields' | 'Maps' | 'OccupancyTypes' | 'OccupancyTypeFields' | 'WorkOrders' | 'WorkOrderComments' | 'WorkOrderMilestones' | 'WorkOrderMilestoneTypes' | 'WorkOrderTypes'; export declare function deleteRecord(recordTable: RecordTable, recordId: number | string, requestSession: recordTypes.PartialSession): boolean; export {}; diff --git a/helpers/lotOccupancyDB/deleteRecord.js b/helpers/lotOccupancyDB/deleteRecord.js index f917381b..f2c9be8d 100644 --- a/helpers/lotOccupancyDB/deleteRecord.js +++ b/helpers/lotOccupancyDB/deleteRecord.js @@ -1,37 +1,44 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; -import { clearCacheByTableName } from "../functions.cache.js"; +import sqlite from 'better-sqlite3'; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'; +import { clearCacheByTableName } from '../functions.cache.js'; const recordIdColumns = new Map(); -recordIdColumns.set("FeeCategories", "feeCategoryId"); -recordIdColumns.set("Fees", "feeId"); -recordIdColumns.set("Lots", "lotId"); -recordIdColumns.set("LotComments", "lotCommentId"); -recordIdColumns.set("LotOccupancies", "lotOccupancyId"); -recordIdColumns.set("LotOccupancyComments", "lotOccupancyCommentId"); -recordIdColumns.set("LotOccupantTypes", "lotOccupantTypeId"); -recordIdColumns.set("LotStatuses", "lotStatusId"); -recordIdColumns.set("LotTypes", "lotTypeId"); -recordIdColumns.set("LotTypeFields", "lotTypeId"); -recordIdColumns.set("Maps", "mapId"); -recordIdColumns.set("OccupancyTypes", "occupancyTypeId"); -recordIdColumns.set("OccupancyTypeFields", "occupancyTypeFieldId"); -recordIdColumns.set("WorkOrders", "workOrderId"); -recordIdColumns.set("WorkOrderComments", "workOrderCommentId"); -recordIdColumns.set("WorkOrderMilestones", "workOrderMilestoneId"); -recordIdColumns.set("WorkOrderMilestoneTypes", "workOrderMilestoneTypeId"); -recordIdColumns.set("WorkOrderTypes", "workOrderTypeId"); +recordIdColumns.set('FeeCategories', 'feeCategoryId'); +recordIdColumns.set('Fees', 'feeId'); +recordIdColumns.set('Lots', 'lotId'); +recordIdColumns.set('LotComments', 'lotCommentId'); +recordIdColumns.set('LotOccupancies', 'lotOccupancyId'); +recordIdColumns.set('LotOccupancyComments', 'lotOccupancyCommentId'); +recordIdColumns.set('LotOccupantTypes', 'lotOccupantTypeId'); +recordIdColumns.set('LotStatuses', 'lotStatusId'); +recordIdColumns.set('LotTypes', 'lotTypeId'); +recordIdColumns.set('LotTypeFields', 'lotTypeId'); +recordIdColumns.set('Maps', 'mapId'); +recordIdColumns.set('OccupancyTypes', 'occupancyTypeId'); +recordIdColumns.set('OccupancyTypeFields', 'occupancyTypeFieldId'); +recordIdColumns.set('WorkOrders', 'workOrderId'); +recordIdColumns.set('WorkOrderComments', 'workOrderCommentId'); +recordIdColumns.set('WorkOrderMilestones', 'workOrderMilestoneId'); +recordIdColumns.set('WorkOrderMilestoneTypes', 'workOrderMilestoneTypeId'); +recordIdColumns.set('WorkOrderTypes', 'workOrderTypeId'); const relatedTables = new Map(); -relatedTables.set("FeeCategories", ["Fees"]); -relatedTables.set("Lots", ["LotFields", "LotComments"]); -relatedTables.set("LotOccupancies", ["LotOccupancyOccupants", "LotOccupancyFields", "LotOccupancyComments"]); -relatedTables.set("LotTypes", ["LotTypeFields"]); -relatedTables.set("Maps", ["Lots"]); -relatedTables.set("OccupancyTypes", ["OccupancyTypePrints", "OccupancyTypeFields"]); -relatedTables.set("WorkOrders", [ - "WorkOrderMilestones", - "WorkOrderLots", - "WorkOrderLotOccupancies", - "WorkOrderComments" +relatedTables.set('FeeCategories', ['Fees']); +relatedTables.set('Lots', ['LotFields', 'LotComments']); +relatedTables.set('LotOccupancies', [ + 'LotOccupancyOccupants', + 'LotOccupancyFields', + 'LotOccupancyComments' +]); +relatedTables.set('LotTypes', ['LotTypeFields']); +relatedTables.set('Maps', ['Lots']); +relatedTables.set('OccupancyTypes', [ + 'OccupancyTypePrints', + 'OccupancyTypeFields' +]); +relatedTables.set('WorkOrders', [ + 'WorkOrderMilestones', + 'WorkOrderLots', + 'WorkOrderLotOccupancies', + 'WorkOrderComments' ]); export function deleteRecord(recordTable, recordId, requestSession) { const database = sqlite(databasePath); @@ -43,7 +50,7 @@ export function deleteRecord(recordTable, recordId, requestSession) { where ${recordIdColumns.get(recordTable)} = ? and recordDelete_timeMillis is null`) .run(requestSession.user.userName, rightNowMillis, recordId); - for (const relatedTable of relatedTables.get(recordTable) || []) { + for (const relatedTable of relatedTables.get(recordTable) ?? []) { database .prepare(`update ${relatedTable} set recordDelete_userName = ?, diff --git a/helpers/lotOccupancyDB/deleteRecord.ts b/helpers/lotOccupancyDB/deleteRecord.ts index 8b0313bd..05531f7f 100644 --- a/helpers/lotOccupancyDB/deleteRecord.ts +++ b/helpers/lotOccupancyDB/deleteRecord.ts @@ -1,99 +1,106 @@ -import sqlite from "better-sqlite3"; +import sqlite from 'better-sqlite3' -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js' -import { clearCacheByTableName } from "../functions.cache.js"; +import { clearCacheByTableName } from '../functions.cache.js' -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes' type RecordTable = - | "FeeCategories" - | "Fees" - | "Lots" - | "LotComments" - | "LotOccupancies" - | "LotOccupancyComments" - | "LotOccupantTypes" - | "LotStatuses" - | "LotTypes" - | "LotTypeFields" - | "Maps" - | "OccupancyTypes" - | "OccupancyTypeFields" - | "WorkOrders" - | "WorkOrderComments" - | "WorkOrderMilestones" - | "WorkOrderMilestoneTypes" - | "WorkOrderTypes"; + | 'FeeCategories' + | 'Fees' + | 'Lots' + | 'LotComments' + | 'LotOccupancies' + | 'LotOccupancyComments' + | 'LotOccupantTypes' + | 'LotStatuses' + | 'LotTypes' + | 'LotTypeFields' + | 'Maps' + | 'OccupancyTypes' + | 'OccupancyTypeFields' + | 'WorkOrders' + | 'WorkOrderComments' + | 'WorkOrderMilestones' + | 'WorkOrderMilestoneTypes' + | 'WorkOrderTypes' -const recordIdColumns: Map = new Map(); -recordIdColumns.set("FeeCategories", "feeCategoryId"); -recordIdColumns.set("Fees", "feeId"); -recordIdColumns.set("Lots", "lotId"); -recordIdColumns.set("LotComments", "lotCommentId"); -recordIdColumns.set("LotOccupancies", "lotOccupancyId"); -recordIdColumns.set("LotOccupancyComments", "lotOccupancyCommentId"); -recordIdColumns.set("LotOccupantTypes", "lotOccupantTypeId"); -recordIdColumns.set("LotStatuses", "lotStatusId"); -recordIdColumns.set("LotTypes", "lotTypeId"); -recordIdColumns.set("LotTypeFields", "lotTypeId"); -recordIdColumns.set("Maps", "mapId"); -recordIdColumns.set("OccupancyTypes", "occupancyTypeId"); -recordIdColumns.set("OccupancyTypeFields", "occupancyTypeFieldId"); -recordIdColumns.set("WorkOrders", "workOrderId"); -recordIdColumns.set("WorkOrderComments", "workOrderCommentId"); -recordIdColumns.set("WorkOrderMilestones", "workOrderMilestoneId"); -recordIdColumns.set("WorkOrderMilestoneTypes", "workOrderMilestoneTypeId"); -recordIdColumns.set("WorkOrderTypes", "workOrderTypeId"); +const recordIdColumns: Map = new Map() +recordIdColumns.set('FeeCategories', 'feeCategoryId') +recordIdColumns.set('Fees', 'feeId') +recordIdColumns.set('Lots', 'lotId') +recordIdColumns.set('LotComments', 'lotCommentId') +recordIdColumns.set('LotOccupancies', 'lotOccupancyId') +recordIdColumns.set('LotOccupancyComments', 'lotOccupancyCommentId') +recordIdColumns.set('LotOccupantTypes', 'lotOccupantTypeId') +recordIdColumns.set('LotStatuses', 'lotStatusId') +recordIdColumns.set('LotTypes', 'lotTypeId') +recordIdColumns.set('LotTypeFields', 'lotTypeId') +recordIdColumns.set('Maps', 'mapId') +recordIdColumns.set('OccupancyTypes', 'occupancyTypeId') +recordIdColumns.set('OccupancyTypeFields', 'occupancyTypeFieldId') +recordIdColumns.set('WorkOrders', 'workOrderId') +recordIdColumns.set('WorkOrderComments', 'workOrderCommentId') +recordIdColumns.set('WorkOrderMilestones', 'workOrderMilestoneId') +recordIdColumns.set('WorkOrderMilestoneTypes', 'workOrderMilestoneTypeId') +recordIdColumns.set('WorkOrderTypes', 'workOrderTypeId') -const relatedTables: Map = new Map(); -relatedTables.set("FeeCategories", ["Fees"]); -relatedTables.set("Lots", ["LotFields", "LotComments"]); -relatedTables.set("LotOccupancies", ["LotOccupancyOccupants", "LotOccupancyFields", "LotOccupancyComments"]); -relatedTables.set("LotTypes", ["LotTypeFields"]); -relatedTables.set("Maps", ["Lots"]); -relatedTables.set("OccupancyTypes", ["OccupancyTypePrints", "OccupancyTypeFields"]); -relatedTables.set("WorkOrders", [ - "WorkOrderMilestones", - "WorkOrderLots", - "WorkOrderLotOccupancies", - "WorkOrderComments" -]); +const relatedTables: Map = new Map() +relatedTables.set('FeeCategories', ['Fees']) +relatedTables.set('Lots', ['LotFields', 'LotComments']) +relatedTables.set('LotOccupancies', [ + 'LotOccupancyOccupants', + 'LotOccupancyFields', + 'LotOccupancyComments' +]) +relatedTables.set('LotTypes', ['LotTypeFields']) +relatedTables.set('Maps', ['Lots']) +relatedTables.set('OccupancyTypes', [ + 'OccupancyTypePrints', + 'OccupancyTypeFields' +]) +relatedTables.set('WorkOrders', [ + 'WorkOrderMilestones', + 'WorkOrderLots', + 'WorkOrderLotOccupancies', + 'WorkOrderComments' +]) export function deleteRecord( - recordTable: RecordTable, - recordId: number | string, - requestSession: recordTypes.PartialSession + recordTable: RecordTable, + recordId: number | string, + requestSession: recordTypes.PartialSession ): boolean { - const database = sqlite(databasePath); + const database = sqlite(databasePath) - const rightNowMillis = Date.now(); + const rightNowMillis = Date.now() - const result = database - .prepare( - `update ${recordTable} + const result = database + .prepare( + `update ${recordTable} set recordDelete_userName = ?, recordDelete_timeMillis = ? - where ${recordIdColumns.get(recordTable)} = ? + where ${recordIdColumns.get(recordTable)!} = ? and recordDelete_timeMillis is null` - ) - .run(requestSession.user.userName, rightNowMillis, recordId); + ) + .run(requestSession.user!.userName, rightNowMillis, recordId) - for (const relatedTable of relatedTables.get(recordTable) || []) { - database - .prepare( - `update ${relatedTable} + for (const relatedTable of relatedTables.get(recordTable) ?? []) { + database + .prepare( + `update ${relatedTable} set recordDelete_userName = ?, recordDelete_timeMillis = ? - where ${recordIdColumns.get(recordTable)} = ? + where ${recordIdColumns.get(recordTable)!} = ? and recordDelete_timeMillis is null` - ) - .run(requestSession.user.userName, rightNowMillis, recordId); - } + ) + .run(requestSession.user!.userName, rightNowMillis, recordId) + } - database.close(); + database.close() - clearCacheByTableName(recordTable); + clearCacheByTableName(recordTable) - return result.changes > 0; + return result.changes > 0 } diff --git a/helpers/lotOccupancyDB/deleteWorkOrderLot.d.ts b/helpers/lotOccupancyDB/deleteWorkOrderLot.d.ts index 138f98bd..e8b604f8 100644 --- a/helpers/lotOccupancyDB/deleteWorkOrderLot.d.ts +++ b/helpers/lotOccupancyDB/deleteWorkOrderLot.d.ts @@ -1,3 +1,3 @@ -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes'; export declare function deleteWorkOrderLot(workOrderId: number | string, lotId: number | string, requestSession: recordTypes.PartialSession): boolean; export default deleteWorkOrderLot; diff --git a/helpers/lotOccupancyDB/deleteWorkOrderLot.js b/helpers/lotOccupancyDB/deleteWorkOrderLot.js index 400b617f..5800c7e8 100644 --- a/helpers/lotOccupancyDB/deleteWorkOrderLot.js +++ b/helpers/lotOccupancyDB/deleteWorkOrderLot.js @@ -1,14 +1,14 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import sqlite from 'better-sqlite3'; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'; export function deleteWorkOrderLot(workOrderId, lotId, requestSession) { const database = sqlite(databasePath); const rightNowMillis = Date.now(); const result = database .prepare(`update WorkOrderLots - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where workOrderId = ? - and lotId = ?`) + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where workOrderId = ? + and lotId = ?`) .run(requestSession.user.userName, rightNowMillis, workOrderId, lotId); database.close(); return result.changes > 0; diff --git a/helpers/lotOccupancyDB/deleteWorkOrderLot.ts b/helpers/lotOccupancyDB/deleteWorkOrderLot.ts index 845d70c5..b33ce7c8 100644 --- a/helpers/lotOccupancyDB/deleteWorkOrderLot.ts +++ b/helpers/lotOccupancyDB/deleteWorkOrderLot.ts @@ -1,31 +1,31 @@ -import sqlite from "better-sqlite3"; +import sqlite from 'better-sqlite3' -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js' -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes' export function deleteWorkOrderLot( - workOrderId: number | string, - lotId: number | string, - requestSession: recordTypes.PartialSession + workOrderId: number | string, + lotId: number | string, + requestSession: recordTypes.PartialSession ): boolean { - const database = sqlite(databasePath); + const database = sqlite(databasePath) - const rightNowMillis = Date.now(); + const rightNowMillis = Date.now() - const result = database - .prepare( - `update WorkOrderLots - set recordDelete_userName = ?, - recordDelete_timeMillis = ? - where workOrderId = ? - and lotId = ?` - ) - .run(requestSession.user.userName, rightNowMillis, workOrderId, lotId); + const result = database + .prepare( + `update WorkOrderLots + set recordDelete_userName = ?, + recordDelete_timeMillis = ? + where workOrderId = ? + and lotId = ?` + ) + .run(requestSession.user!.userName, rightNowMillis, workOrderId, lotId) - database.close(); + database.close() - return result.changes > 0; + return result.changes > 0 } -export default deleteWorkOrderLot; +export default deleteWorkOrderLot diff --git a/helpers/lotOccupancyDB/deleteWorkOrderLotOccupancy.d.ts b/helpers/lotOccupancyDB/deleteWorkOrderLotOccupancy.d.ts index f05d8578..85c885c7 100644 --- a/helpers/lotOccupancyDB/deleteWorkOrderLotOccupancy.d.ts +++ b/helpers/lotOccupancyDB/deleteWorkOrderLotOccupancy.d.ts @@ -1,3 +1,3 @@ -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes'; export declare function deleteWorkOrderLotOccupancy(workOrderId: number | string, lotOccupancyId: number | string, requestSession: recordTypes.PartialSession): boolean; export default deleteWorkOrderLotOccupancy; diff --git a/helpers/lotOccupancyDB/deleteWorkOrderLotOccupancy.js b/helpers/lotOccupancyDB/deleteWorkOrderLotOccupancy.js index 9e82cecb..66c1c5d4 100644 --- a/helpers/lotOccupancyDB/deleteWorkOrderLotOccupancy.js +++ b/helpers/lotOccupancyDB/deleteWorkOrderLotOccupancy.js @@ -1,5 +1,5 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import sqlite from 'better-sqlite3'; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'; export function deleteWorkOrderLotOccupancy(workOrderId, lotOccupancyId, requestSession) { const database = sqlite(databasePath); const rightNowMillis = Date.now(); diff --git a/helpers/lotOccupancyDB/deleteWorkOrderLotOccupancy.ts b/helpers/lotOccupancyDB/deleteWorkOrderLotOccupancy.ts index 3ca99a29..93f96e78 100644 --- a/helpers/lotOccupancyDB/deleteWorkOrderLotOccupancy.ts +++ b/helpers/lotOccupancyDB/deleteWorkOrderLotOccupancy.ts @@ -1,31 +1,36 @@ -import sqlite from "better-sqlite3"; +import sqlite from 'better-sqlite3' -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js' -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes' export function deleteWorkOrderLotOccupancy( - workOrderId: number | string, - lotOccupancyId: number | string, - requestSession: recordTypes.PartialSession + workOrderId: number | string, + lotOccupancyId: number | string, + requestSession: recordTypes.PartialSession ): boolean { - const database = sqlite(databasePath); + const database = sqlite(databasePath) - const rightNowMillis = Date.now(); + const rightNowMillis = Date.now() - const result = database - .prepare( - `update WorkOrderLotOccupancies + const result = database + .prepare( + `update WorkOrderLotOccupancies set recordDelete_userName = ?, recordDelete_timeMillis = ? where workOrderId = ? and lotOccupancyId = ?` - ) - .run(requestSession.user.userName, rightNowMillis, workOrderId, lotOccupancyId); + ) + .run( + requestSession.user!.userName, + rightNowMillis, + workOrderId, + lotOccupancyId + ) - database.close(); + database.close() - return result.changes > 0; + return result.changes > 0 } -export default deleteWorkOrderLotOccupancy; +export default deleteWorkOrderLotOccupancy diff --git a/helpers/lotOccupancyDB/getLotOccupancies.d.ts b/helpers/lotOccupancyDB/getLotOccupancies.d.ts index 3520cb10..fdc229db 100644 --- a/helpers/lotOccupancyDB/getLotOccupancies.d.ts +++ b/helpers/lotOccupancyDB/getLotOccupancies.d.ts @@ -1,14 +1,14 @@ -import sqlite from "better-sqlite3"; -import type * as recordTypes from "../../types/recordTypes"; +import sqlite from 'better-sqlite3'; +import type * as recordTypes from '../../types/recordTypes'; interface GetLotOccupanciesFilters { lotId?: number | string; - occupancyTime?: "" | "past" | "current" | "future"; + occupancyTime?: '' | 'past' | 'current' | 'future'; occupancyStartDateString?: string; occupancyEffectiveDateString?: string; occupantName?: string; occupancyTypeId?: number | string; mapId?: number | string; - lotNameSearchType?: "" | "startsWith" | "endsWith"; + lotNameSearchType?: '' | 'startsWith' | 'endsWith'; lotName?: string; lotTypeId?: number | string; workOrderId?: number | string; diff --git a/helpers/lotOccupancyDB/getLotOccupancies.js b/helpers/lotOccupancyDB/getLotOccupancies.js index 8abae80b..7dafdc65 100644 --- a/helpers/lotOccupancyDB/getLotOccupancies.js +++ b/helpers/lotOccupancyDB/getLotOccupancies.js @@ -1,60 +1,60 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; -import { dateIntegerToString, dateStringToInteger } from "@cityssm/expressjs-server-js/dateTimeFns.js"; -import * as configFunctions from "../functions.config.js"; -import { getOccupancyTypeById } from "../functions.cache.js"; -import { getLotOccupancyOccupants } from "./getLotOccupancyOccupants.js"; -import { getLotNameWhereClause, getOccupancyTimeWhereClause, getOccupantNameWhereClause } from "../functions.sqlFilters.js"; +import sqlite from 'better-sqlite3'; +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'; +import { dateIntegerToString, dateStringToInteger } from '@cityssm/expressjs-server-js/dateTimeFns.js'; +import * as configFunctions from '../functions.config.js'; +import { getOccupancyTypeById } from '../functions.cache.js'; +import { getLotOccupancyOccupants } from './getLotOccupancyOccupants.js'; +import { getLotNameWhereClause, getOccupancyTimeWhereClause, getOccupantNameWhereClause } from '../functions.sqlFilters.js'; function buildWhereClause(filters) { - let sqlWhereClause = " where o.recordDelete_timeMillis is null"; + let sqlWhereClause = ' where o.recordDelete_timeMillis is null'; const sqlParameters = []; if (filters.lotId) { - sqlWhereClause += " and o.lotId = ?"; + sqlWhereClause += ' and o.lotId = ?'; sqlParameters.push(filters.lotId); } - const lotNameFilters = getLotNameWhereClause(filters.lotName, filters.lotNameSearchType, "l"); + const lotNameFilters = getLotNameWhereClause(filters.lotName, filters.lotNameSearchType ?? '', 'l'); sqlWhereClause += lotNameFilters.sqlWhereClause; sqlParameters.push(...lotNameFilters.sqlParameters); - const occupantNameFilters = getOccupantNameWhereClause(filters.occupantName, "o"); + const occupantNameFilters = getOccupantNameWhereClause(filters.occupantName, 'o'); if (occupantNameFilters.sqlParameters.length > 0) { sqlWhereClause += - " and o.lotOccupancyId in (select lotOccupancyId from LotOccupancyOccupants o where recordDelete_timeMillis is null" + + ' and o.lotOccupancyId in (select lotOccupancyId from LotOccupancyOccupants o where recordDelete_timeMillis is null' + occupantNameFilters.sqlWhereClause + - ")"; + ')'; sqlParameters.push(...occupantNameFilters.sqlParameters); } if (filters.occupancyTypeId) { - sqlWhereClause += " and o.occupancyTypeId = ?"; + sqlWhereClause += ' and o.occupancyTypeId = ?'; sqlParameters.push(filters.occupancyTypeId); } - const occupancyTimeFilters = getOccupancyTimeWhereClause(filters.occupancyTime, "o"); + const occupancyTimeFilters = getOccupancyTimeWhereClause(filters.occupancyTime ?? '', 'o'); sqlWhereClause += occupancyTimeFilters.sqlWhereClause; sqlParameters.push(...occupancyTimeFilters.sqlParameters); if (filters.occupancyStartDateString) { - sqlWhereClause += " and o.occupancyStartDate = ?"; + sqlWhereClause += ' and o.occupancyStartDate = ?'; sqlParameters.push(dateStringToInteger(filters.occupancyStartDateString)); } if (filters.occupancyEffectiveDateString) { sqlWhereClause += - " and (o.occupancyStartDate <= ? and (o.occupancyEndDate is null or o.occupancyEndDate >= ?))"; + ' and (o.occupancyStartDate <= ? and (o.occupancyEndDate is null or o.occupancyEndDate >= ?))'; sqlParameters.push(dateStringToInteger(filters.occupancyEffectiveDateString), dateStringToInteger(filters.occupancyEffectiveDateString)); } if (filters.mapId) { - sqlWhereClause += " and l.mapId = ?"; + sqlWhereClause += ' and l.mapId = ?'; sqlParameters.push(filters.mapId); } if (filters.lotTypeId) { - sqlWhereClause += " and l.lotTypeId = ?"; + sqlWhereClause += ' and l.lotTypeId = ?'; sqlParameters.push(filters.lotTypeId); } if (filters.workOrderId) { sqlWhereClause += - " and o.lotOccupancyId in (select lotOccupancyId from WorkOrderLotOccupancies where recordDelete_timeMillis is null and workOrderId = ?)"; + ' and o.lotOccupancyId in (select lotOccupancyId from WorkOrderLotOccupancies where recordDelete_timeMillis is null and workOrderId = ?)'; sqlParameters.push(filters.workOrderId); } if (filters.notWorkOrderId) { sqlWhereClause += - " and o.lotOccupancyId not in (select lotOccupancyId from WorkOrderLotOccupancies where recordDelete_timeMillis is null and workOrderId = ?)"; + ' and o.lotOccupancyId not in (select lotOccupancyId from WorkOrderLotOccupancies where recordDelete_timeMillis is null and workOrderId = ?)'; sqlParameters.push(filters.notWorkOrderId); } return { @@ -63,19 +63,19 @@ function buildWhereClause(filters) { }; } export function getLotOccupancies(filters, options, connectedDatabase) { - const database = connectedDatabase || + const database = connectedDatabase ?? sqlite(databasePath, { readonly: true }); - database.function("userFn_dateIntegerToString", dateIntegerToString); + database.function('userFn_dateIntegerToString', dateIntegerToString); const { sqlWhereClause, sqlParameters } = buildWhereClause(filters); let count = options.limit; const isLimited = options.limit !== -1; if (isLimited) { count = database - .prepare("select count(*) as recordCount" + - " from LotOccupancies o" + - " left join Lots l on o.lotId = l.lotId" + + .prepare('select count(*) as recordCount' + + ' from LotOccupancies o' + + ' left join Lots l on o.lotId = l.lotId' + sqlWhereClause) .get(sqlParameters).recordCount; } @@ -95,7 +95,7 @@ export function getLotOccupancies(filters, options, connectedDatabase) { left join Maps m on l.mapId = m.mapId ${sqlWhereClause} order by o.occupancyStartDate desc, ifnull(o.occupancyEndDate, 99999999) desc, l.lotName, o.lotId, o.lotOccupancyId desc` + - (isLimited ? ` limit ${options.limit} offset ${options.offset}` : "")) + (isLimited ? ` limit ${options.limit} offset ${options.offset}` : '')) .all(sqlParameters); if (!isLimited) { count = lotOccupancies.length; @@ -103,8 +103,8 @@ export function getLotOccupancies(filters, options, connectedDatabase) { for (const lotOccupancy of lotOccupancies) { const occupancyType = getOccupancyTypeById(lotOccupancy.occupancyTypeId); if (occupancyType) { - lotOccupancy.printEJS = occupancyType.occupancyTypePrints.includes("*") - ? configFunctions.getProperty("settings.lotOccupancy.prints")[0] + lotOccupancy.printEJS = (occupancyType.occupancyTypePrints ?? []).includes('*') + ? configFunctions.getProperty('settings.lotOccupancy.prints')[0] : occupancyType.occupancyTypePrints[0]; } if (options.includeOccupants) { diff --git a/helpers/lotOccupancyDB/getLotOccupancies.ts b/helpers/lotOccupancyDB/getLotOccupancies.ts index 4bfadbbb..e64554cd 100644 --- a/helpers/lotOccupancyDB/getLotOccupancies.ts +++ b/helpers/lotOccupancyDB/getLotOccupancies.ts @@ -1,160 +1,172 @@ -import sqlite from "better-sqlite3"; +/* eslint-disable @typescript-eslint/indent */ -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import sqlite from 'better-sqlite3' + +import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js' import { - dateIntegerToString, - dateStringToInteger -} from "@cityssm/expressjs-server-js/dateTimeFns.js"; + dateIntegerToString, + dateStringToInteger +} from '@cityssm/expressjs-server-js/dateTimeFns.js' -import * as configFunctions from "../functions.config.js"; +import * as configFunctions from '../functions.config.js' -import { getOccupancyTypeById } from "../functions.cache.js"; -import { getLotOccupancyOccupants } from "./getLotOccupancyOccupants.js"; +import { getOccupancyTypeById } from '../functions.cache.js' +import { getLotOccupancyOccupants } from './getLotOccupancyOccupants.js' -import type * as recordTypes from "../../types/recordTypes"; +import type * as recordTypes from '../../types/recordTypes' import { - getLotNameWhereClause, - getOccupancyTimeWhereClause, - getOccupantNameWhereClause -} from "../functions.sqlFilters.js"; + getLotNameWhereClause, + getOccupancyTimeWhereClause, + getOccupantNameWhereClause +} from '../functions.sqlFilters.js' interface GetLotOccupanciesFilters { - lotId?: number | string; - occupancyTime?: "" | "past" | "current" | "future"; - occupancyStartDateString?: string; - occupancyEffectiveDateString?: string; - occupantName?: string; - occupancyTypeId?: number | string; - mapId?: number | string; - lotNameSearchType?: "" | "startsWith" | "endsWith"; - lotName?: string; - lotTypeId?: number | string; - workOrderId?: number | string; - notWorkOrderId?: number | string; + lotId?: number | string + occupancyTime?: '' | 'past' | 'current' | 'future' + occupancyStartDateString?: string + occupancyEffectiveDateString?: string + occupantName?: string + occupancyTypeId?: number | string + mapId?: number | string + lotNameSearchType?: '' | 'startsWith' | 'endsWith' + lotName?: string + lotTypeId?: number | string + workOrderId?: number | string + notWorkOrderId?: number | string } interface GetLotOccupanciesOptions { - limit: -1 | number; - offset: number; - includeOccupants: boolean; + limit: -1 | number + offset: number + includeOccupants: boolean } function buildWhereClause(filters: GetLotOccupanciesFilters): { - sqlWhereClause: string; - sqlParameters: unknown[]; + sqlWhereClause: string + sqlParameters: unknown[] } { - let sqlWhereClause = " where o.recordDelete_timeMillis is null"; - const sqlParameters: unknown[] = []; + let sqlWhereClause = ' where o.recordDelete_timeMillis is null' + const sqlParameters: unknown[] = [] - if (filters.lotId) { - sqlWhereClause += " and o.lotId = ?"; - sqlParameters.push(filters.lotId); - } + if (filters.lotId) { + sqlWhereClause += ' and o.lotId = ?' + sqlParameters.push(filters.lotId) + } - const lotNameFilters = getLotNameWhereClause(filters.lotName, filters.lotNameSearchType, "l"); - sqlWhereClause += lotNameFilters.sqlWhereClause; - sqlParameters.push(...lotNameFilters.sqlParameters); + const lotNameFilters = getLotNameWhereClause( + filters.lotName, + filters.lotNameSearchType ?? '', + 'l' + ) + sqlWhereClause += lotNameFilters.sqlWhereClause + sqlParameters.push(...lotNameFilters.sqlParameters) - const occupantNameFilters = getOccupantNameWhereClause(filters.occupantName, "o"); - if (occupantNameFilters.sqlParameters.length > 0) { - sqlWhereClause += - " and o.lotOccupancyId in (select lotOccupancyId from LotOccupancyOccupants o where recordDelete_timeMillis is null" + - occupantNameFilters.sqlWhereClause + - ")"; - sqlParameters.push(...occupantNameFilters.sqlParameters); - } + const occupantNameFilters = getOccupantNameWhereClause( + filters.occupantName, + 'o' + ) + if (occupantNameFilters.sqlParameters.length > 0) { + sqlWhereClause += + ' and o.lotOccupancyId in (select lotOccupancyId from LotOccupancyOccupants o where recordDelete_timeMillis is null' + + occupantNameFilters.sqlWhereClause + + ')' + sqlParameters.push(...occupantNameFilters.sqlParameters) + } - if (filters.occupancyTypeId) { - sqlWhereClause += " and o.occupancyTypeId = ?"; - sqlParameters.push(filters.occupancyTypeId); - } + if (filters.occupancyTypeId) { + sqlWhereClause += ' and o.occupancyTypeId = ?' + sqlParameters.push(filters.occupancyTypeId) + } - const occupancyTimeFilters = getOccupancyTimeWhereClause(filters.occupancyTime, "o"); - sqlWhereClause += occupancyTimeFilters.sqlWhereClause; - sqlParameters.push(...occupancyTimeFilters.sqlParameters); + const occupancyTimeFilters = getOccupancyTimeWhereClause( + filters.occupancyTime ?? '', + 'o' + ) + sqlWhereClause += occupancyTimeFilters.sqlWhereClause + sqlParameters.push(...occupancyTimeFilters.sqlParameters) - if (filters.occupancyStartDateString) { - sqlWhereClause += " and o.occupancyStartDate = ?"; - sqlParameters.push(dateStringToInteger(filters.occupancyStartDateString)); - } + if (filters.occupancyStartDateString) { + sqlWhereClause += ' and o.occupancyStartDate = ?' + sqlParameters.push(dateStringToInteger(filters.occupancyStartDateString)) + } - if (filters.occupancyEffectiveDateString) { - sqlWhereClause += - " and (o.occupancyStartDate <= ? and (o.occupancyEndDate is null or o.occupancyEndDate >= ?))"; - sqlParameters.push( - dateStringToInteger(filters.occupancyEffectiveDateString), - dateStringToInteger(filters.occupancyEffectiveDateString) - ); - } + if (filters.occupancyEffectiveDateString) { + sqlWhereClause += + ' and (o.occupancyStartDate <= ? and (o.occupancyEndDate is null or o.occupancyEndDate >= ?))' + sqlParameters.push( + dateStringToInteger(filters.occupancyEffectiveDateString), + dateStringToInteger(filters.occupancyEffectiveDateString) + ) + } - if (filters.mapId) { - sqlWhereClause += " and l.mapId = ?"; - sqlParameters.push(filters.mapId); - } + if (filters.mapId) { + sqlWhereClause += ' and l.mapId = ?' + sqlParameters.push(filters.mapId) + } - if (filters.lotTypeId) { - sqlWhereClause += " and l.lotTypeId = ?"; - sqlParameters.push(filters.lotTypeId); - } + if (filters.lotTypeId) { + sqlWhereClause += ' and l.lotTypeId = ?' + sqlParameters.push(filters.lotTypeId) + } - if (filters.workOrderId) { - sqlWhereClause += - " and o.lotOccupancyId in (select lotOccupancyId from WorkOrderLotOccupancies where recordDelete_timeMillis is null and workOrderId = ?)"; - sqlParameters.push(filters.workOrderId); - } + if (filters.workOrderId) { + sqlWhereClause += + ' and o.lotOccupancyId in (select lotOccupancyId from WorkOrderLotOccupancies where recordDelete_timeMillis is null and workOrderId = ?)' + sqlParameters.push(filters.workOrderId) + } - if (filters.notWorkOrderId) { - sqlWhereClause += - " and o.lotOccupancyId not in (select lotOccupancyId from WorkOrderLotOccupancies where recordDelete_timeMillis is null and workOrderId = ?)"; - sqlParameters.push(filters.notWorkOrderId); - } + if (filters.notWorkOrderId) { + sqlWhereClause += + ' and o.lotOccupancyId not in (select lotOccupancyId from WorkOrderLotOccupancies where recordDelete_timeMillis is null and workOrderId = ?)' + sqlParameters.push(filters.notWorkOrderId) + } - return { - sqlWhereClause, - sqlParameters - }; + return { + sqlWhereClause, + sqlParameters + } } export function getLotOccupancies( - filters: GetLotOccupanciesFilters, - options: GetLotOccupanciesOptions, - connectedDatabase?: sqlite.Database + filters: GetLotOccupanciesFilters, + options: GetLotOccupanciesOptions, + connectedDatabase?: sqlite.Database ): { - count: number; - lotOccupancies: recordTypes.LotOccupancy[]; + count: number + lotOccupancies: recordTypes.LotOccupancy[] } { - const database = - connectedDatabase || - sqlite(databasePath, { - readonly: true - }); + const database = + connectedDatabase ?? + sqlite(databasePath, { + readonly: true + }) - database.function("userFn_dateIntegerToString", dateIntegerToString); + database.function('userFn_dateIntegerToString', dateIntegerToString) - const { sqlWhereClause, sqlParameters } = buildWhereClause(filters); + const { sqlWhereClause, sqlParameters } = buildWhereClause(filters) - let count = options.limit; + let count = options.limit - const isLimited = options.limit !== -1; + const isLimited = options.limit !== -1 - if (isLimited) { - count = database - .prepare( - "select count(*) as recordCount" + - " from LotOccupancies o" + - " left join Lots l on o.lotId = l.lotId" + - sqlWhereClause - ) - .get(sqlParameters).recordCount; - } + if (isLimited) { + count = database + .prepare( + 'select count(*) as recordCount' + + ' from LotOccupancies o' + + ' left join Lots l on o.lotId = l.lotId' + + sqlWhereClause + ) + .get(sqlParameters).recordCount + } - let lotOccupancies: recordTypes.LotOccupancy[] = []; + let lotOccupancies: recordTypes.LotOccupancy[] = [] - if (count !== 0) { - lotOccupancies = database - .prepare( - `select o.lotOccupancyId, + if (count !== 0) { + lotOccupancies = database + .prepare( + `select o.lotOccupancyId, o.occupancyTypeId, t.occupancyType, o.lotId, lt.lotType, l.lotName, l.mapId, m.mapName, @@ -167,40 +179,42 @@ export function getLotOccupancies( left join Maps m on l.mapId = m.mapId ${sqlWhereClause} order by o.occupancyStartDate desc, ifnull(o.occupancyEndDate, 99999999) desc, l.lotName, o.lotId, o.lotOccupancyId desc` + - (isLimited ? ` limit ${options.limit} offset ${options.offset}` : "") - ) - .all(sqlParameters); + (isLimited ? ` limit ${options.limit} offset ${options.offset}` : '') + ) + .all(sqlParameters) - if (!isLimited) { - count = lotOccupancies.length; - } - - for (const lotOccupancy of lotOccupancies) { - const occupancyType = getOccupancyTypeById(lotOccupancy.occupancyTypeId); - - if (occupancyType) { - lotOccupancy.printEJS = occupancyType.occupancyTypePrints.includes("*") - ? configFunctions.getProperty("settings.lotOccupancy.prints")[0] - : occupancyType.occupancyTypePrints[0]; - } - - if (options.includeOccupants) { - lotOccupancy.lotOccupancyOccupants = getLotOccupancyOccupants( - lotOccupancy.lotOccupancyId, - database - ); - } - } + if (!isLimited) { + count = lotOccupancies.length } - if (!connectedDatabase) { - database.close(); - } + for (const lotOccupancy of lotOccupancies) { + const occupancyType = getOccupancyTypeById(lotOccupancy.occupancyTypeId!) - return { - count, - lotOccupancies - }; + if (occupancyType) { + lotOccupancy.printEJS = ( + occupancyType.occupancyTypePrints ?? [] + ).includes('*') + ? configFunctions.getProperty('settings.lotOccupancy.prints')[0] + : occupancyType.occupancyTypePrints![0] + } + + if (options.includeOccupants) { + lotOccupancy.lotOccupancyOccupants = getLotOccupancyOccupants( + lotOccupancy.lotOccupancyId!, + database + ) + } + } + } + + if (!connectedDatabase) { + database.close() + } + + return { + count, + lotOccupancies + } } -export default getLotOccupancies; +export default getLotOccupancies