diff --git a/helpers/lotOccupancyDB/updateFeeCategory.js b/helpers/lotOccupancyDB/updateFeeCategory.js index 47e4f146..812e9eeb 100644 --- a/helpers/lotOccupancyDB/updateFeeCategory.js +++ b/helpers/lotOccupancyDB/updateFeeCategory.js @@ -1,18 +1,9 @@ import sqlite from "better-sqlite3"; import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { updateRecord } from "./updateRecord.js"; export function updateFeeCategory(feeCategoryForm, requestSession) { - const database = sqlite(databasePath); - const rightNowMillis = Date.now(); - const result = database - .prepare(`update FeeCategories - set feeCategory = ?, - recordUpdate_userName = ?, - recordUpdate_timeMillis = ? - where recordDelete_timeMillis is null - and feeCategoryId = ?`) - .run(feeCategoryForm.feeCategory, requestSession.user.userName, rightNowMillis, feeCategoryForm.feeCategoryId); - database.close(); - return result.changes > 0; + const success = updateRecord("FeeCategories", feeCategoryForm.feeCategoryId, feeCategoryForm.feeCategory, requestSession); + return success; } export function updateFeeCategoryOrderNumber(feeCategoryId, orderNumber, connectedDatabase) { const database = connectedDatabase || diff --git a/helpers/lotOccupancyDB/updateFeeCategory.ts b/helpers/lotOccupancyDB/updateFeeCategory.ts index 7bde76d9..4db46e71 100644 --- a/helpers/lotOccupancyDB/updateFeeCategory.ts +++ b/helpers/lotOccupancyDB/updateFeeCategory.ts @@ -1,6 +1,7 @@ import sqlite from "better-sqlite3"; import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { updateRecord } from "./updateRecord.js"; import type * as recordTypes from "../../types/recordTypes"; @@ -13,29 +14,13 @@ export function updateFeeCategory( feeCategoryForm: UpdateFeeCategoryForm, requestSession: recordTypes.PartialSession ): boolean { - const database = sqlite(databasePath); - - const rightNowMillis = Date.now(); - - const result = database - .prepare( - `update FeeCategories - set feeCategory = ?, - recordUpdate_userName = ?, - recordUpdate_timeMillis = ? - where recordDelete_timeMillis is null - and feeCategoryId = ?` - ) - .run( - feeCategoryForm.feeCategory, - requestSession.user.userName, - rightNowMillis, - feeCategoryForm.feeCategoryId - ); - - database.close(); - - return result.changes > 0; + const success = updateRecord( + "FeeCategories", + feeCategoryForm.feeCategoryId, + feeCategoryForm.feeCategory, + requestSession + ); + return success; } export function updateFeeCategoryOrderNumber( diff --git a/helpers/lotOccupancyDB/updateLotStatus.js b/helpers/lotOccupancyDB/updateLotStatus.js index 85591af7..512412ae 100644 --- a/helpers/lotOccupancyDB/updateLotStatus.js +++ b/helpers/lotOccupancyDB/updateLotStatus.js @@ -1,19 +1,8 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; import { clearLotStatusesCache } from "../functions.cache.js"; +import { updateRecord } from "./updateRecord.js"; export function updateLotStatus(lotStatusForm, requestSession) { - const database = sqlite(databasePath); - const rightNowMillis = Date.now(); - const result = database - .prepare(`update LotStatuses - set lotStatus = ?, - recordUpdate_userName = ?, - recordUpdate_timeMillis = ? - where lotStatusId = ? - and recordDelete_timeMillis is null`) - .run(lotStatusForm.lotStatus, requestSession.user.userName, rightNowMillis, lotStatusForm.lotStatusId); - database.close(); + const success = updateRecord("LotStatuses", lotStatusForm.lotStatusId, lotStatusForm.lotStatus, requestSession); clearLotStatusesCache(); - return result.changes > 0; + return success; } export default updateLotStatus; diff --git a/helpers/lotOccupancyDB/updateLotStatus.ts b/helpers/lotOccupancyDB/updateLotStatus.ts index 5df60ef9..997dac44 100644 --- a/helpers/lotOccupancyDB/updateLotStatus.ts +++ b/helpers/lotOccupancyDB/updateLotStatus.ts @@ -1,8 +1,5 @@ -import sqlite from "better-sqlite3"; - -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; - import { clearLotStatusesCache } from "../functions.cache.js"; +import { updateRecord } from "./updateRecord.js"; import type * as recordTypes from "../../types/recordTypes"; @@ -15,31 +12,16 @@ export function updateLotStatus( lotStatusForm: UpdateLotStatusForm, requestSession: recordTypes.PartialSession ): boolean { - const database = sqlite(databasePath); - - const rightNowMillis = Date.now(); - - const result = database - .prepare( - `update LotStatuses - set lotStatus = ?, - recordUpdate_userName = ?, - recordUpdate_timeMillis = ? - where lotStatusId = ? - and recordDelete_timeMillis is null` - ) - .run( - lotStatusForm.lotStatus, - requestSession.user.userName, - rightNowMillis, - lotStatusForm.lotStatusId - ); - - database.close(); + const success = updateRecord( + "LotStatuses", + lotStatusForm.lotStatusId, + lotStatusForm.lotStatus, + requestSession + ); clearLotStatusesCache(); - return result.changes > 0; + return success; } export default updateLotStatus; diff --git a/helpers/lotOccupancyDB/updateLotType.js b/helpers/lotOccupancyDB/updateLotType.js index d0055f42..bc5c9c6f 100644 --- a/helpers/lotOccupancyDB/updateLotType.js +++ b/helpers/lotOccupancyDB/updateLotType.js @@ -1,19 +1,8 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; import { clearLotTypesCache } from "../functions.cache.js"; +import { updateRecord } from "./updateRecord.js"; export function updateLotType(lotTypeForm, requestSession) { - const database = sqlite(databasePath); - const rightNowMillis = Date.now(); - const result = database - .prepare(`update LotTypes - set lotType = ?, - recordUpdate_userName = ?, - recordUpdate_timeMillis = ? - where lotTypeId = ? - and recordDelete_timeMillis is null`) - .run(lotTypeForm.lotType, requestSession.user.userName, rightNowMillis, lotTypeForm.lotTypeId); - database.close(); + const success = updateRecord("LotTypes", lotTypeForm.lotTypeId, lotTypeForm.lotType, requestSession); clearLotTypesCache(); - return result.changes > 0; + return success; } export default updateLotType; diff --git a/helpers/lotOccupancyDB/updateLotType.ts b/helpers/lotOccupancyDB/updateLotType.ts index 5293aa1f..63cbd39b 100644 --- a/helpers/lotOccupancyDB/updateLotType.ts +++ b/helpers/lotOccupancyDB/updateLotType.ts @@ -1,8 +1,5 @@ -import sqlite from "better-sqlite3"; - -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; - import { clearLotTypesCache } from "../functions.cache.js"; +import { updateRecord } from "./updateRecord.js"; import type * as recordTypes from "../../types/recordTypes"; @@ -15,31 +12,11 @@ export function updateLotType( lotTypeForm: UpdateLotTypeForm, requestSession: recordTypes.PartialSession ): boolean { - const database = sqlite(databasePath); - - const rightNowMillis = Date.now(); - - const result = database - .prepare( - `update LotTypes - set lotType = ?, - recordUpdate_userName = ?, - recordUpdate_timeMillis = ? - where lotTypeId = ? - and recordDelete_timeMillis is null` - ) - .run( - lotTypeForm.lotType, - requestSession.user.userName, - rightNowMillis, - lotTypeForm.lotTypeId - ); - - database.close(); + const success = updateRecord("LotTypes", lotTypeForm.lotTypeId, lotTypeForm.lotType, requestSession); clearLotTypesCache(); - return result.changes > 0; + return success; } export default updateLotType; diff --git a/helpers/lotOccupancyDB/updateOccupancyType.js b/helpers/lotOccupancyDB/updateOccupancyType.js index 792c555d..af1f0624 100644 --- a/helpers/lotOccupancyDB/updateOccupancyType.js +++ b/helpers/lotOccupancyDB/updateOccupancyType.js @@ -1,19 +1,8 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; import { clearOccupancyTypesCache } from "../functions.cache.js"; +import { updateRecord } from "./updateRecord.js"; export function updateOccupancyType(occupancyTypeForm, requestSession) { - const database = sqlite(databasePath); - const rightNowMillis = Date.now(); - const result = database - .prepare(`update OccupancyTypes - set occupancyType = ?, - recordUpdate_userName = ?, - recordUpdate_timeMillis = ? - where occupancyTypeId = ? - and recordDelete_timeMillis is null`) - .run(occupancyTypeForm.occupancyType, requestSession.user.userName, rightNowMillis, occupancyTypeForm.occupancyTypeId); - database.close(); + const success = updateRecord("OccupancyTypes", occupancyTypeForm.occupancyTypeId, occupancyTypeForm.occupancyType, requestSession); clearOccupancyTypesCache(); - return result.changes > 0; + return success; } export default updateOccupancyType; diff --git a/helpers/lotOccupancyDB/updateOccupancyType.ts b/helpers/lotOccupancyDB/updateOccupancyType.ts index 011c9741..bf87791a 100644 --- a/helpers/lotOccupancyDB/updateOccupancyType.ts +++ b/helpers/lotOccupancyDB/updateOccupancyType.ts @@ -1,8 +1,5 @@ -import sqlite from "better-sqlite3"; - -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; - import { clearOccupancyTypesCache } from "../functions.cache.js"; +import { updateRecord } from "./updateRecord.js"; import type * as recordTypes from "../../types/recordTypes"; @@ -15,31 +12,16 @@ export function updateOccupancyType( occupancyTypeForm: UpdateOccupancyTypeForm, requestSession: recordTypes.PartialSession ): boolean { - const database = sqlite(databasePath); - - const rightNowMillis = Date.now(); - - const result = database - .prepare( - `update OccupancyTypes - set occupancyType = ?, - recordUpdate_userName = ?, - recordUpdate_timeMillis = ? - where occupancyTypeId = ? - and recordDelete_timeMillis is null` - ) - .run( - occupancyTypeForm.occupancyType, - requestSession.user.userName, - rightNowMillis, - occupancyTypeForm.occupancyTypeId - ); - - database.close(); + const success = updateRecord( + "OccupancyTypes", + occupancyTypeForm.occupancyTypeId, + occupancyTypeForm.occupancyType, + requestSession + ); clearOccupancyTypesCache(); - return result.changes > 0; + return success; } export default updateOccupancyType; diff --git a/helpers/lotOccupancyDB/updateRecord.d.ts b/helpers/lotOccupancyDB/updateRecord.d.ts new file mode 100644 index 00000000..17cfbb22 --- /dev/null +++ b/helpers/lotOccupancyDB/updateRecord.d.ts @@ -0,0 +1,4 @@ +import type * as recordTypes from "../../types/recordTypes"; +declare type RecordTable = "FeeCategories" | "LotStatuses" | "LotTypes" | "OccupancyTypes" | "WorkOrderMilestoneTypes" | "WorkOrderTypes"; +export declare function updateRecord(recordTable: RecordTable, recordId: number | string, recordName: string, requestSession: recordTypes.PartialSession): boolean; +export {}; diff --git a/helpers/lotOccupancyDB/updateRecord.js b/helpers/lotOccupancyDB/updateRecord.js new file mode 100644 index 00000000..734e621f --- /dev/null +++ b/helpers/lotOccupancyDB/updateRecord.js @@ -0,0 +1,23 @@ +import sqlite from "better-sqlite3"; +import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +const recordNameIdColumns = new Map(); +recordNameIdColumns.set("FeeCategories", ["feeCategory", "feeCategoryId"]); +recordNameIdColumns.set("LotStatuses", ["lotStatus", "lotStatusId"]); +recordNameIdColumns.set("LotTypes", ["lotType", "lotTypeId"]); +recordNameIdColumns.set("OccupancyTypes", ["occupancyType", "occupancyTypeId"]); +recordNameIdColumns.set("WorkOrderMilestoneTypes", ["workOrderMilestoneType", "workOrderMilestoneTypeId"]); +recordNameIdColumns.set("WorkOrderTypes", ["workOrderType", "workOrderTypeId"]); +export function updateRecord(recordTable, recordId, recordName, requestSession) { + const database = sqlite(databasePath); + const rightNowMillis = Date.now(); + const result = database + .prepare(`update ${recordTable} + set ${recordNameIdColumns.get(recordTable)[0]} = ?, + recordUpdate_userName = ?, + recordUpdate_timeMillis = ? + where recordDelete_timeMillis is null + and ${recordNameIdColumns.get(recordTable)[1]} = ?`) + .run(recordName, requestSession.user.userName, rightNowMillis, recordId); + database.close(); + return result.changes > 0; +} diff --git a/helpers/lotOccupancyDB/updateRecord.ts b/helpers/lotOccupancyDB/updateRecord.ts new file mode 100644 index 00000000..7d237978 --- /dev/null +++ b/helpers/lotOccupancyDB/updateRecord.ts @@ -0,0 +1,47 @@ +import sqlite from "better-sqlite3"; + +import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; + +import type * as recordTypes from "../../types/recordTypes"; + +type RecordTable = + | "FeeCategories" + | "LotStatuses" + | "LotTypes" + | "OccupancyTypes" + | "WorkOrderMilestoneTypes" + | "WorkOrderTypes"; + +const recordNameIdColumns: Map = new Map(); +recordNameIdColumns.set("FeeCategories", ["feeCategory", "feeCategoryId"]); +recordNameIdColumns.set("LotStatuses", ["lotStatus", "lotStatusId"]); +recordNameIdColumns.set("LotTypes", ["lotType", "lotTypeId"]); +recordNameIdColumns.set("OccupancyTypes", ["occupancyType", "occupancyTypeId"]); +recordNameIdColumns.set("WorkOrderMilestoneTypes", ["workOrderMilestoneType", "workOrderMilestoneTypeId"]); +recordNameIdColumns.set("WorkOrderTypes", ["workOrderType", "workOrderTypeId"]); + +export function updateRecord( + recordTable: RecordTable, + recordId: number | string, + recordName: string, + requestSession: recordTypes.PartialSession +): boolean { + const database = sqlite(databasePath); + + const rightNowMillis = Date.now(); + + const result = database + .prepare( + `update ${recordTable} + set ${recordNameIdColumns.get(recordTable)[0]} = ?, + recordUpdate_userName = ?, + recordUpdate_timeMillis = ? + where recordDelete_timeMillis is null + and ${recordNameIdColumns.get(recordTable)[1]} = ?` + ) + .run(recordName, requestSession.user.userName, rightNowMillis, recordId); + + database.close(); + + return result.changes > 0; +} diff --git a/helpers/lotOccupancyDB/updateWorkOrderMilestoneType.js b/helpers/lotOccupancyDB/updateWorkOrderMilestoneType.js index 6ae2e97d..1bcd1466 100644 --- a/helpers/lotOccupancyDB/updateWorkOrderMilestoneType.js +++ b/helpers/lotOccupancyDB/updateWorkOrderMilestoneType.js @@ -1,19 +1,8 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; import { clearWorkOrderMilestoneTypesCache } from "../functions.cache.js"; +import { updateRecord } from "./updateRecord.js"; export function updateWorkOrderMilestoneType(workOrderMilestoneTypeForm, requestSession) { - const database = sqlite(databasePath); - const rightNowMillis = Date.now(); - const result = database - .prepare(`update WorkOrderMilestoneTypes - set workOrderMilestoneType = ?, - recordUpdate_userName = ?, - recordUpdate_timeMillis = ? - where workOrderMilestoneTypeId = ? - and recordDelete_timeMillis is null`) - .run(workOrderMilestoneTypeForm.workOrderMilestoneType, requestSession.user.userName, rightNowMillis, workOrderMilestoneTypeForm.workOrderMilestoneTypeId); - database.close(); + const success = updateRecord("WorkOrderMilestoneTypes", workOrderMilestoneTypeForm.workOrderMilestoneTypeId, workOrderMilestoneTypeForm.workOrderMilestoneType, requestSession); clearWorkOrderMilestoneTypesCache(); - return result.changes > 0; + return success; } export default updateWorkOrderMilestoneType; diff --git a/helpers/lotOccupancyDB/updateWorkOrderMilestoneType.ts b/helpers/lotOccupancyDB/updateWorkOrderMilestoneType.ts index 200a90cb..d7574578 100644 --- a/helpers/lotOccupancyDB/updateWorkOrderMilestoneType.ts +++ b/helpers/lotOccupancyDB/updateWorkOrderMilestoneType.ts @@ -1,8 +1,5 @@ -import sqlite from "better-sqlite3"; - -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; - import { clearWorkOrderMilestoneTypesCache } from "../functions.cache.js"; +import { updateRecord } from "./updateRecord.js"; import type * as recordTypes from "../../types/recordTypes"; @@ -15,31 +12,16 @@ export function updateWorkOrderMilestoneType( workOrderMilestoneTypeForm: UpdateWorkOrderMilestoneTypeForm, requestSession: recordTypes.PartialSession ): boolean { - const database = sqlite(databasePath); - - const rightNowMillis = Date.now(); - - const result = database - .prepare( - `update WorkOrderMilestoneTypes - set workOrderMilestoneType = ?, - recordUpdate_userName = ?, - recordUpdate_timeMillis = ? - where workOrderMilestoneTypeId = ? - and recordDelete_timeMillis is null` - ) - .run( - workOrderMilestoneTypeForm.workOrderMilestoneType, - requestSession.user.userName, - rightNowMillis, - workOrderMilestoneTypeForm.workOrderMilestoneTypeId - ); - - database.close(); + const success = updateRecord( + "WorkOrderMilestoneTypes", + workOrderMilestoneTypeForm.workOrderMilestoneTypeId, + workOrderMilestoneTypeForm.workOrderMilestoneType, + requestSession + ); clearWorkOrderMilestoneTypesCache(); - return result.changes > 0; + return success; } export default updateWorkOrderMilestoneType; diff --git a/helpers/lotOccupancyDB/updateWorkOrderType.js b/helpers/lotOccupancyDB/updateWorkOrderType.js index 960d67fc..bba94b44 100644 --- a/helpers/lotOccupancyDB/updateWorkOrderType.js +++ b/helpers/lotOccupancyDB/updateWorkOrderType.js @@ -1,19 +1,8 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; import { clearWorkOrderTypesCache } from "../functions.cache.js"; +import { updateRecord } from "./updateRecord.js"; export function updateWorkOrderType(workOrderTypeForm, requestSession) { - const database = sqlite(databasePath); - const rightNowMillis = Date.now(); - const result = database - .prepare(`update WorkOrderTypes - set workOrderType = ?, - recordUpdate_userName = ?, - recordUpdate_timeMillis = ? - where workOrderTypeId = ? - and recordDelete_timeMillis is null`) - .run(workOrderTypeForm.workOrderType, requestSession.user.userName, rightNowMillis, workOrderTypeForm.workOrderTypeId); - database.close(); + const success = updateRecord("WorkOrderTypes", workOrderTypeForm.workOrderTypeId, workOrderTypeForm.workOrderType, requestSession); clearWorkOrderTypesCache(); - return result.changes > 0; + return success; } export default updateWorkOrderType; diff --git a/helpers/lotOccupancyDB/updateWorkOrderType.ts b/helpers/lotOccupancyDB/updateWorkOrderType.ts index cedd706d..7b2aa2a9 100644 --- a/helpers/lotOccupancyDB/updateWorkOrderType.ts +++ b/helpers/lotOccupancyDB/updateWorkOrderType.ts @@ -1,8 +1,5 @@ -import sqlite from "better-sqlite3"; - -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; - import { clearWorkOrderTypesCache } from "../functions.cache.js"; +import { updateRecord } from "./updateRecord.js"; import type * as recordTypes from "../../types/recordTypes"; @@ -15,31 +12,16 @@ export function updateWorkOrderType( workOrderTypeForm: UpdateWorkOrderTypeForm, requestSession: recordTypes.PartialSession ): boolean { - const database = sqlite(databasePath); - - const rightNowMillis = Date.now(); - - const result = database - .prepare( - `update WorkOrderTypes - set workOrderType = ?, - recordUpdate_userName = ?, - recordUpdate_timeMillis = ? - where workOrderTypeId = ? - and recordDelete_timeMillis is null` - ) - .run( - workOrderTypeForm.workOrderType, - requestSession.user.userName, - rightNowMillis, - workOrderTypeForm.workOrderTypeId - ); - - database.close(); + const success = updateRecord( + "WorkOrderTypes", + workOrderTypeForm.workOrderTypeId, + workOrderTypeForm.workOrderType, + requestSession + ); clearWorkOrderTypesCache(); - return result.changes > 0; + return success; } export default updateWorkOrderType;