From 19e3ecc0bed4c3d115c07070eb58e292ffbea569 Mon Sep 17 00:00:00 2001 From: Dan Gowans Date: Fri, 6 Jan 2023 11:28:46 -0500 Subject: [PATCH] reduce ordernumber update code --- helpers/lotOccupancyDB/getFeeCategories.js | 4 +- helpers/lotOccupancyDB/getFeeCategories.ts | 8 ++-- helpers/lotOccupancyDB/getFees.js | 6 +-- helpers/lotOccupancyDB/getFees.ts | 7 ++- helpers/lotOccupancyDB/getLotOccupantTypes.js | 7 +-- helpers/lotOccupancyDB/getLotOccupantTypes.ts | 14 +++--- helpers/lotOccupancyDB/getLotStatuses.js | 7 +-- helpers/lotOccupancyDB/getLotStatuses.ts | 10 +---- helpers/lotOccupancyDB/getLotTypeFields.js | 5 +-- helpers/lotOccupancyDB/getLotTypeFields.ts | 10 +++-- helpers/lotOccupancyDB/getLotTypes.js | 15 +------ helpers/lotOccupancyDB/getLotTypes.ts | 19 +------- .../lotOccupancyDB/getOccupancyTypeFields.js | 5 +-- .../lotOccupancyDB/getOccupancyTypeFields.ts | 12 +++--- helpers/lotOccupancyDB/getOccupancyTypes.js | 15 +------ helpers/lotOccupancyDB/getOccupancyTypes.ts | 36 ++++------------ .../getWorkOrderMilestoneTypes.js | 7 +-- .../getWorkOrderMilestoneTypes.ts | 15 ++++--- helpers/lotOccupancyDB/getWorkOrderTypes.js | 5 +-- helpers/lotOccupancyDB/getWorkOrderTypes.ts | 10 +++-- helpers/lotOccupancyDB/updateFee.d.ts | 2 - helpers/lotOccupancyDB/updateFee.js | 13 ------ helpers/lotOccupancyDB/updateFee.ts | 27 +----------- helpers/lotOccupancyDB/updateFeeCategory.d.ts | 2 - helpers/lotOccupancyDB/updateFeeCategory.js | 15 ------- helpers/lotOccupancyDB/updateFeeCategory.ts | 25 ----------- .../updateRecordOrderNumber.d.ts | 4 ++ .../lotOccupancyDB/updateRecordOrderNumber.js | 20 +++++++++ .../lotOccupancyDB/updateRecordOrderNumber.ts | 43 +++++++++++++++++++ 29 files changed, 145 insertions(+), 223 deletions(-) create mode 100644 helpers/lotOccupancyDB/updateRecordOrderNumber.d.ts create mode 100644 helpers/lotOccupancyDB/updateRecordOrderNumber.js create mode 100644 helpers/lotOccupancyDB/updateRecordOrderNumber.ts diff --git a/helpers/lotOccupancyDB/getFeeCategories.js b/helpers/lotOccupancyDB/getFeeCategories.js index 1f3fcfef..1ded9851 100644 --- a/helpers/lotOccupancyDB/getFeeCategories.js +++ b/helpers/lotOccupancyDB/getFeeCategories.js @@ -1,7 +1,7 @@ import sqlite from "better-sqlite3"; import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; import { getFees } from "./getFees.js"; -import { updateFeeCategoryOrderNumber } from "./updateFeeCategory.js"; +import { updateRecordOrderNumber } from "./updateRecordOrderNumber.js"; export function getFeeCategories(filters, options) { const updateOrderNumbers = !(filters.lotTypeId || filters.occupancyTypeId) && options.includeFees; const database = sqlite(databasePath, { @@ -36,7 +36,7 @@ export function getFeeCategories(filters, options) { for (const feeCategory of feeCategories) { expectedFeeCategoryOrderNumber += 1; if (updateOrderNumbers && feeCategory.orderNumber !== expectedFeeCategoryOrderNumber) { - updateFeeCategoryOrderNumber(feeCategory.feeCategoryId, expectedFeeCategoryOrderNumber, database); + updateRecordOrderNumber("FeeCategories", feeCategory.feeCategoryId, expectedFeeCategoryOrderNumber, database); feeCategory.orderNumber = expectedFeeCategoryOrderNumber; } feeCategory.fees = getFees(feeCategory.feeCategoryId, filters, database); diff --git a/helpers/lotOccupancyDB/getFeeCategories.ts b/helpers/lotOccupancyDB/getFeeCategories.ts index 5a904633..89ec7188 100644 --- a/helpers/lotOccupancyDB/getFeeCategories.ts +++ b/helpers/lotOccupancyDB/getFeeCategories.ts @@ -3,7 +3,7 @@ import sqlite from "better-sqlite3"; import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; import { getFees } from "./getFees.js"; -import { updateFeeCategoryOrderNumber } from "./updateFeeCategory.js"; +import { updateRecordOrderNumber } from "./updateRecordOrderNumber.js"; import type * as recordTypes from "../../types/recordTypes"; @@ -20,8 +20,7 @@ export function getFeeCategories( filters: GetFeeCategoriesFilters, options: GetFeeCategoriesOptions ): recordTypes.FeeCategory[] { - const updateOrderNumbers = - !(filters.lotTypeId || filters.occupancyTypeId) && options.includeFees; + const updateOrderNumbers = !(filters.lotTypeId || filters.occupancyTypeId) && options.includeFees; const database = sqlite(databasePath, { readonly: !updateOrderNumbers @@ -67,7 +66,8 @@ export function getFeeCategories( expectedFeeCategoryOrderNumber += 1; if (updateOrderNumbers && feeCategory.orderNumber !== expectedFeeCategoryOrderNumber) { - updateFeeCategoryOrderNumber( + updateRecordOrderNumber( + "FeeCategories", feeCategory.feeCategoryId, expectedFeeCategoryOrderNumber, database diff --git a/helpers/lotOccupancyDB/getFees.js b/helpers/lotOccupancyDB/getFees.js index 02ae9a07..91f3fc05 100644 --- a/helpers/lotOccupancyDB/getFees.js +++ b/helpers/lotOccupancyDB/getFees.js @@ -1,13 +1,13 @@ import sqlite from "better-sqlite3"; import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; -import { updateFeeOrderNumber } from "./updateFee.js"; +import { updateRecordOrderNumber } from "./updateRecordOrderNumber.js"; export function getFees(feeCategoryId, additionalFilters, connectedDatabase) { const updateOrderNumbers = !(additionalFilters.lotTypeId || additionalFilters.occupancyTypeId); const database = connectedDatabase || sqlite(databasePath, { readonly: !updateOrderNumbers }); - let sqlWhereClause = " where f.recordDelete_timeMillis is null" + " and f.feeCategoryId = ?"; + let sqlWhereClause = " where f.recordDelete_timeMillis is null and f.feeCategoryId = ?"; const sqlParameters = [feeCategoryId]; if (additionalFilters.occupancyTypeId) { sqlWhereClause += " and (f.occupancyTypeId is null or f.occupancyTypeId = ?)"; @@ -36,7 +36,7 @@ export function getFees(feeCategoryId, additionalFilters, connectedDatabase) { for (const fee of fees) { expectedFeeOrderNumber += 1; if (fee.orderNumber !== expectedFeeOrderNumber) { - updateFeeOrderNumber(fee.feeId, expectedFeeOrderNumber, database); + updateRecordOrderNumber("Fees", fee.feeId, expectedFeeOrderNumber, database); fee.orderNumber = expectedFeeOrderNumber; } } diff --git a/helpers/lotOccupancyDB/getFees.ts b/helpers/lotOccupancyDB/getFees.ts index cc5808da..80327be3 100644 --- a/helpers/lotOccupancyDB/getFees.ts +++ b/helpers/lotOccupancyDB/getFees.ts @@ -2,7 +2,7 @@ import sqlite from "better-sqlite3"; import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; -import { updateFeeOrderNumber } from "./updateFee.js"; +import { updateRecordOrderNumber } from "./updateRecordOrderNumber.js"; import type * as recordTypes from "../../types/recordTypes"; @@ -24,7 +24,7 @@ export function getFees( readonly: !updateOrderNumbers }); - let sqlWhereClause = " where f.recordDelete_timeMillis is null" + " and f.feeCategoryId = ?"; + let sqlWhereClause = " where f.recordDelete_timeMillis is null and f.feeCategoryId = ?"; const sqlParameters: unknown[] = [feeCategoryId]; @@ -64,8 +64,7 @@ export function getFees( expectedFeeOrderNumber += 1; if (fee.orderNumber !== expectedFeeOrderNumber) { - updateFeeOrderNumber(fee.feeId, expectedFeeOrderNumber, database); - + updateRecordOrderNumber("Fees", fee.feeId, expectedFeeOrderNumber, database); fee.orderNumber = expectedFeeOrderNumber; } } diff --git a/helpers/lotOccupancyDB/getLotOccupantTypes.js b/helpers/lotOccupancyDB/getLotOccupantTypes.js index 75282c8e..0fb66ff3 100644 --- a/helpers/lotOccupancyDB/getLotOccupantTypes.js +++ b/helpers/lotOccupancyDB/getLotOccupantTypes.js @@ -1,5 +1,6 @@ import sqlite from "better-sqlite3"; import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { updateRecordOrderNumber } from "./updateRecordOrderNumber.js"; export function getLotOccupantTypes() { const database = sqlite(databasePath); const lotOccupantTypes = database @@ -11,11 +12,7 @@ export function getLotOccupantTypes() { let expectedOrderNumber = 0; for (const lotOccupantType of lotOccupantTypes) { if (lotOccupantType.orderNumber !== expectedOrderNumber) { - database - .prepare(`update LotOccupantTypes - set orderNumber = ? - where lotOccupantTypeId = ?`) - .run(expectedOrderNumber, lotOccupantType.lotOccupantTypeId); + updateRecordOrderNumber("LotOccupantTypes", lotOccupantType.lotOccupantTypeId, expectedOrderNumber, database); lotOccupantType.orderNumber = expectedOrderNumber; } expectedOrderNumber += 1; diff --git a/helpers/lotOccupancyDB/getLotOccupantTypes.ts b/helpers/lotOccupancyDB/getLotOccupantTypes.ts index 22915e8d..350e6c80 100644 --- a/helpers/lotOccupancyDB/getLotOccupantTypes.ts +++ b/helpers/lotOccupancyDB/getLotOccupantTypes.ts @@ -3,6 +3,7 @@ import sqlite from "better-sqlite3"; import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; import type * as recordTypes from "../../types/recordTypes"; +import { updateRecordOrderNumber } from "./updateRecordOrderNumber.js"; export function getLotOccupantTypes(): recordTypes.LotOccupantType[] { const database = sqlite(databasePath); @@ -20,13 +21,12 @@ export function getLotOccupantTypes(): recordTypes.LotOccupantType[] { for (const lotOccupantType of lotOccupantTypes) { if (lotOccupantType.orderNumber !== expectedOrderNumber) { - database - .prepare( - `update LotOccupantTypes - set orderNumber = ? - where lotOccupantTypeId = ?` - ) - .run(expectedOrderNumber, lotOccupantType.lotOccupantTypeId); + updateRecordOrderNumber( + "LotOccupantTypes", + lotOccupantType.lotOccupantTypeId, + expectedOrderNumber, + database + ); lotOccupantType.orderNumber = expectedOrderNumber; } diff --git a/helpers/lotOccupancyDB/getLotStatuses.js b/helpers/lotOccupancyDB/getLotStatuses.js index 9a06696f..2088ef88 100644 --- a/helpers/lotOccupancyDB/getLotStatuses.js +++ b/helpers/lotOccupancyDB/getLotStatuses.js @@ -1,5 +1,6 @@ import sqlite from "better-sqlite3"; import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { updateRecordOrderNumber } from "./updateRecordOrderNumber.js"; export function getLotStatuses() { const database = sqlite(databasePath); const lotStatuses = database @@ -11,11 +12,7 @@ export function getLotStatuses() { let expectedOrderNumber = 0; for (const lotStatus of lotStatuses) { if (lotStatus.orderNumber !== expectedOrderNumber) { - database - .prepare(`update LotStatuses - set orderNumber = ? - where lotStatusId = ?`) - .run(expectedOrderNumber, lotStatus.lotStatusId); + updateRecordOrderNumber("LotStatuses", lotStatus.lotStatusId, expectedOrderNumber, database); lotStatus.orderNumber = expectedOrderNumber; } expectedOrderNumber += 1; diff --git a/helpers/lotOccupancyDB/getLotStatuses.ts b/helpers/lotOccupancyDB/getLotStatuses.ts index a89aa7b1..9c1b03ef 100644 --- a/helpers/lotOccupancyDB/getLotStatuses.ts +++ b/helpers/lotOccupancyDB/getLotStatuses.ts @@ -3,6 +3,7 @@ import sqlite from "better-sqlite3"; import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; import type * as recordTypes from "../../types/recordTypes"; +import { updateRecordOrderNumber } from "./updateRecordOrderNumber.js"; export function getLotStatuses(): recordTypes.LotStatus[] { const database = sqlite(databasePath); @@ -20,14 +21,7 @@ export function getLotStatuses(): recordTypes.LotStatus[] { for (const lotStatus of lotStatuses) { if (lotStatus.orderNumber !== expectedOrderNumber) { - database - .prepare( - `update LotStatuses - set orderNumber = ? - where lotStatusId = ?` - ) - .run(expectedOrderNumber, lotStatus.lotStatusId); - + updateRecordOrderNumber("LotStatuses", lotStatus.lotStatusId, expectedOrderNumber, database); lotStatus.orderNumber = expectedOrderNumber; } diff --git a/helpers/lotOccupancyDB/getLotTypeFields.js b/helpers/lotOccupancyDB/getLotTypeFields.js index fc458031..d431adc6 100644 --- a/helpers/lotOccupancyDB/getLotTypeFields.js +++ b/helpers/lotOccupancyDB/getLotTypeFields.js @@ -1,5 +1,6 @@ import sqlite from "better-sqlite3"; import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { updateRecordOrderNumber } from "./updateRecordOrderNumber.js"; export function getLotTypeFields(lotTypeId, connectedDatabase) { const database = connectedDatabase || sqlite(databasePath); const lotTypeFields = database @@ -15,9 +16,7 @@ export function getLotTypeFields(lotTypeId, connectedDatabase) { for (const lotTypeField of lotTypeFields) { expectedFieldOrderNumber += 1; if (lotTypeField.orderNumber !== expectedFieldOrderNumber) { - database - .prepare("update LotTypeFields set orderNumber = ? where lotTypeFieldId = ?") - .run(expectedFieldOrderNumber, lotTypeField.lotTypeFieldId); + updateRecordOrderNumber("LotTypeFields", lotTypeField.lotTypeFieldId, expectedFieldOrderNumber, database); lotTypeField.orderNumber = expectedFieldOrderNumber; } } diff --git a/helpers/lotOccupancyDB/getLotTypeFields.ts b/helpers/lotOccupancyDB/getLotTypeFields.ts index 429657cb..b8ae6e3a 100644 --- a/helpers/lotOccupancyDB/getLotTypeFields.ts +++ b/helpers/lotOccupancyDB/getLotTypeFields.ts @@ -3,6 +3,7 @@ import sqlite from "better-sqlite3"; import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; import type * as recordTypes from "../../types/recordTypes"; +import { updateRecordOrderNumber } from "./updateRecordOrderNumber.js"; export function getLotTypeFields( lotTypeId: number, @@ -28,9 +29,12 @@ export function getLotTypeFields( expectedFieldOrderNumber += 1; if (lotTypeField.orderNumber !== expectedFieldOrderNumber) { - database - .prepare("update LotTypeFields set orderNumber = ? where lotTypeFieldId = ?") - .run(expectedFieldOrderNumber, lotTypeField.lotTypeFieldId); + updateRecordOrderNumber( + "LotTypeFields", + lotTypeField.lotTypeFieldId, + expectedFieldOrderNumber, + database + ); lotTypeField.orderNumber = expectedFieldOrderNumber; } diff --git a/helpers/lotOccupancyDB/getLotTypes.js b/helpers/lotOccupancyDB/getLotTypes.js index 569d61ab..2c32872d 100644 --- a/helpers/lotOccupancyDB/getLotTypes.js +++ b/helpers/lotOccupancyDB/getLotTypes.js @@ -1,6 +1,7 @@ import sqlite from "better-sqlite3"; import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; import { getLotTypeFields } from "./getLotTypeFields.js"; +import { updateRecordOrderNumber } from "./updateRecordOrderNumber.js"; export function getLotTypes() { const database = sqlite(databasePath); const lotTypes = database @@ -13,22 +14,10 @@ export function getLotTypes() { for (const lotType of lotTypes) { expectedTypeOrderNumber += 1; if (lotType.orderNumber !== expectedTypeOrderNumber) { - database - .prepare("update LotTypes set orderNumber = ? where lotTypeId = ?") - .run(expectedTypeOrderNumber, lotType.lotTypeId); + updateRecordOrderNumber("LotTypes", lotType.lotTypeId, expectedTypeOrderNumber, database); lotType.orderNumber = expectedTypeOrderNumber; } lotType.lotTypeFields = getLotTypeFields(lotType.lotTypeId, database); - let expectedFieldOrderNumber = -1; - for (const lotTypeField of lotType.lotTypeFields) { - expectedFieldOrderNumber += 1; - if (lotTypeField.orderNumber !== expectedFieldOrderNumber) { - database - .prepare(`update LotTypeFields set orderNumber = ? where lotTypeFieldId = ?`) - .run(expectedFieldOrderNumber, lotTypeField.lotTypeFieldId); - lotTypeField.orderNumber = expectedFieldOrderNumber; - } - } } database.close(); return lotTypes; diff --git a/helpers/lotOccupancyDB/getLotTypes.ts b/helpers/lotOccupancyDB/getLotTypes.ts index efeeacbd..2182e108 100644 --- a/helpers/lotOccupancyDB/getLotTypes.ts +++ b/helpers/lotOccupancyDB/getLotTypes.ts @@ -5,6 +5,7 @@ import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; import { getLotTypeFields } from "./getLotTypeFields.js"; import type * as recordTypes from "../../types/recordTypes"; +import { updateRecordOrderNumber } from "./updateRecordOrderNumber.js"; export function getLotTypes(): recordTypes.LotType[] { const database = sqlite(databasePath); @@ -24,28 +25,12 @@ export function getLotTypes(): recordTypes.LotType[] { expectedTypeOrderNumber += 1; if (lotType.orderNumber !== expectedTypeOrderNumber) { - database - .prepare("update LotTypes set orderNumber = ? where lotTypeId = ?") - .run(expectedTypeOrderNumber, lotType.lotTypeId); + updateRecordOrderNumber("LotTypes", lotType.lotTypeId, expectedTypeOrderNumber, database); lotType.orderNumber = expectedTypeOrderNumber; } lotType.lotTypeFields = getLotTypeFields(lotType.lotTypeId as number, database); - - let expectedFieldOrderNumber = -1; - - for (const lotTypeField of lotType.lotTypeFields) { - expectedFieldOrderNumber += 1; - - if (lotTypeField.orderNumber !== expectedFieldOrderNumber) { - database - .prepare(`update LotTypeFields set orderNumber = ? where lotTypeFieldId = ?`) - .run(expectedFieldOrderNumber, lotTypeField.lotTypeFieldId); - - lotTypeField.orderNumber = expectedFieldOrderNumber; - } - } } database.close(); diff --git a/helpers/lotOccupancyDB/getOccupancyTypeFields.js b/helpers/lotOccupancyDB/getOccupancyTypeFields.js index 81061c4c..c5b5205d 100644 --- a/helpers/lotOccupancyDB/getOccupancyTypeFields.js +++ b/helpers/lotOccupancyDB/getOccupancyTypeFields.js @@ -1,5 +1,6 @@ import sqlite from "better-sqlite3"; import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { updateRecordOrderNumber } from "./updateRecordOrderNumber.js"; export function getOccupancyTypeFields(occupancyTypeId, connectedDatabase) { const database = connectedDatabase || sqlite(databasePath); const sqlParameters = []; @@ -20,9 +21,7 @@ export function getOccupancyTypeFields(occupancyTypeId, connectedDatabase) { for (const occupancyTypeField of occupancyTypeFields) { expectedFieldOrderNumber += 1; if (occupancyTypeField.orderNumber !== expectedFieldOrderNumber) { - database - .prepare(`update OccupancyTypeFields set orderNumber = ? where occupancyTypeFieldId = ?`) - .run(expectedFieldOrderNumber, occupancyTypeField.occupancyTypeFieldId); + updateRecordOrderNumber("OccupancyTypeFields", occupancyTypeField.occupancyTypeFieldId, expectedFieldOrderNumber, database); occupancyTypeField.orderNumber = expectedFieldOrderNumber; } } diff --git a/helpers/lotOccupancyDB/getOccupancyTypeFields.ts b/helpers/lotOccupancyDB/getOccupancyTypeFields.ts index a4248701..39df325b 100644 --- a/helpers/lotOccupancyDB/getOccupancyTypeFields.ts +++ b/helpers/lotOccupancyDB/getOccupancyTypeFields.ts @@ -3,6 +3,7 @@ import sqlite from "better-sqlite3"; import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; import type * as recordTypes from "../../types/recordTypes"; +import { updateRecordOrderNumber } from "./updateRecordOrderNumber.js"; export function getOccupancyTypeFields( occupancyTypeId?: number, @@ -35,11 +36,12 @@ export function getOccupancyTypeFields( expectedFieldOrderNumber += 1; if (occupancyTypeField.orderNumber !== expectedFieldOrderNumber) { - database - .prepare( - `update OccupancyTypeFields set orderNumber = ? where occupancyTypeFieldId = ?` - ) - .run(expectedFieldOrderNumber, occupancyTypeField.occupancyTypeFieldId); + updateRecordOrderNumber( + "OccupancyTypeFields", + occupancyTypeField.occupancyTypeFieldId, + expectedFieldOrderNumber, + database + ); occupancyTypeField.orderNumber = expectedFieldOrderNumber; } diff --git a/helpers/lotOccupancyDB/getOccupancyTypes.js b/helpers/lotOccupancyDB/getOccupancyTypes.js index ce0631fe..7334d430 100644 --- a/helpers/lotOccupancyDB/getOccupancyTypes.js +++ b/helpers/lotOccupancyDB/getOccupancyTypes.js @@ -2,6 +2,7 @@ import sqlite from "better-sqlite3"; import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; import { getOccupancyTypeFields } from "./getOccupancyTypeFields.js"; import { getOccupancyTypePrints } from "./getOccupancyTypePrints.js"; +import { updateRecordOrderNumber } from "./updateRecordOrderNumber.js"; export function getOccupancyTypes() { const database = sqlite(databasePath); const occupancyTypes = database @@ -14,23 +15,11 @@ export function getOccupancyTypes() { for (const occupancyType of occupancyTypes) { expectedTypeOrderNumber += 1; if (occupancyType.orderNumber !== expectedTypeOrderNumber) { - database - .prepare("update OccupancyTypes set orderNumber = ? where occupancyTypeId = ?") - .run(expectedTypeOrderNumber, occupancyType.occupancyTypeId); + updateRecordOrderNumber("OccupancyTypes", occupancyType.occupancyTypeId, expectedTypeOrderNumber, database); occupancyType.orderNumber = expectedTypeOrderNumber; } occupancyType.occupancyTypeFields = getOccupancyTypeFields(occupancyType.occupancyTypeId, database); occupancyType.occupancyTypePrints = getOccupancyTypePrints(occupancyType.occupancyTypeId, database); - let expectedFieldOrderNumber = -1; - for (const occupancyTypeField of occupancyType.occupancyTypeFields) { - expectedFieldOrderNumber += 1; - if (occupancyTypeField.orderNumber !== expectedFieldOrderNumber) { - database - .prepare(`update OccupancyTypeFields set orderNumber = ? where occupancyTypeFieldId = ?`) - .run(expectedFieldOrderNumber, occupancyTypeField.occupancyTypeFieldId); - occupancyTypeField.orderNumber = expectedFieldOrderNumber; - } - } } database.close(); return occupancyTypes; diff --git a/helpers/lotOccupancyDB/getOccupancyTypes.ts b/helpers/lotOccupancyDB/getOccupancyTypes.ts index 53bcd1de..6cb65eb6 100644 --- a/helpers/lotOccupancyDB/getOccupancyTypes.ts +++ b/helpers/lotOccupancyDB/getOccupancyTypes.ts @@ -6,6 +6,7 @@ import { getOccupancyTypeFields } from "./getOccupancyTypeFields.js"; import { getOccupancyTypePrints } from "./getOccupancyTypePrints.js"; import type * as recordTypes from "../../types/recordTypes"; +import { updateRecordOrderNumber } from "./updateRecordOrderNumber.js"; export function getOccupancyTypes(): recordTypes.OccupancyType[] { const database = sqlite(databasePath); @@ -25,38 +26,19 @@ export function getOccupancyTypes(): recordTypes.OccupancyType[] { expectedTypeOrderNumber += 1; if (occupancyType.orderNumber !== expectedTypeOrderNumber) { - database - .prepare("update OccupancyTypes set orderNumber = ? where occupancyTypeId = ?") - .run(expectedTypeOrderNumber, occupancyType.occupancyTypeId); + updateRecordOrderNumber( + "OccupancyTypes", + occupancyType.occupancyTypeId, + expectedTypeOrderNumber, + database + ); occupancyType.orderNumber = expectedTypeOrderNumber; } - occupancyType.occupancyTypeFields = getOccupancyTypeFields( - occupancyType.occupancyTypeId, - database - ); + occupancyType.occupancyTypeFields = getOccupancyTypeFields(occupancyType.occupancyTypeId, database); - occupancyType.occupancyTypePrints = getOccupancyTypePrints( - occupancyType.occupancyTypeId, - database - ); - - let expectedFieldOrderNumber = -1; - - for (const occupancyTypeField of occupancyType.occupancyTypeFields) { - expectedFieldOrderNumber += 1; - - if (occupancyTypeField.orderNumber !== expectedFieldOrderNumber) { - database - .prepare( - `update OccupancyTypeFields set orderNumber = ? where occupancyTypeFieldId = ?` - ) - .run(expectedFieldOrderNumber, occupancyTypeField.occupancyTypeFieldId); - - occupancyTypeField.orderNumber = expectedFieldOrderNumber; - } - } + occupancyType.occupancyTypePrints = getOccupancyTypePrints(occupancyType.occupancyTypeId, database); } database.close(); diff --git a/helpers/lotOccupancyDB/getWorkOrderMilestoneTypes.js b/helpers/lotOccupancyDB/getWorkOrderMilestoneTypes.js index 748ae893..987cd646 100644 --- a/helpers/lotOccupancyDB/getWorkOrderMilestoneTypes.js +++ b/helpers/lotOccupancyDB/getWorkOrderMilestoneTypes.js @@ -1,5 +1,6 @@ import sqlite from "better-sqlite3"; import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { updateRecordOrderNumber } from "./updateRecordOrderNumber.js"; export function getWorkOrderMilestoneTypes() { const database = sqlite(databasePath); const workOrderMilestoneTypes = database @@ -11,11 +12,7 @@ export function getWorkOrderMilestoneTypes() { let expectedOrderNumber = 0; for (const workOrderMilestoneType of workOrderMilestoneTypes) { if (workOrderMilestoneType.orderNumber !== expectedOrderNumber) { - database - .prepare(`update WorkOrderMilestoneTypes - set orderNumber = ? - where workOrderMilestoneTypeId = ?`) - .run(expectedOrderNumber, workOrderMilestoneType.workOrderMilestoneTypeId); + updateRecordOrderNumber("WorkOrderMilestoneTypes", workOrderMilestoneType.workOrderMilestoneTypeId, expectedOrderNumber, database); workOrderMilestoneType.orderNumber = expectedOrderNumber; } expectedOrderNumber += 1; diff --git a/helpers/lotOccupancyDB/getWorkOrderMilestoneTypes.ts b/helpers/lotOccupancyDB/getWorkOrderMilestoneTypes.ts index bcc295a3..a8187b75 100644 --- a/helpers/lotOccupancyDB/getWorkOrderMilestoneTypes.ts +++ b/helpers/lotOccupancyDB/getWorkOrderMilestoneTypes.ts @@ -2,6 +2,8 @@ import sqlite from "better-sqlite3"; import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { updateRecordOrderNumber } from "./updateRecordOrderNumber.js"; + import type * as recordTypes from "../../types/recordTypes"; export function getWorkOrderMilestoneTypes(): recordTypes.WorkOrderMilestoneType[] { @@ -20,13 +22,12 @@ export function getWorkOrderMilestoneTypes(): recordTypes.WorkOrderMilestoneType for (const workOrderMilestoneType of workOrderMilestoneTypes) { if (workOrderMilestoneType.orderNumber !== expectedOrderNumber) { - database - .prepare( - `update WorkOrderMilestoneTypes - set orderNumber = ? - where workOrderMilestoneTypeId = ?` - ) - .run(expectedOrderNumber, workOrderMilestoneType.workOrderMilestoneTypeId); + updateRecordOrderNumber( + "WorkOrderMilestoneTypes", + workOrderMilestoneType.workOrderMilestoneTypeId, + expectedOrderNumber, + database + ); workOrderMilestoneType.orderNumber = expectedOrderNumber; } diff --git a/helpers/lotOccupancyDB/getWorkOrderTypes.js b/helpers/lotOccupancyDB/getWorkOrderTypes.js index de78ae04..ff6bc06f 100644 --- a/helpers/lotOccupancyDB/getWorkOrderTypes.js +++ b/helpers/lotOccupancyDB/getWorkOrderTypes.js @@ -1,5 +1,6 @@ import sqlite from "better-sqlite3"; import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { updateRecordOrderNumber } from "./updateRecordOrderNumber.js"; export function getWorkOrderTypes() { const database = sqlite(databasePath); const workOrderTypes = database @@ -11,9 +12,7 @@ export function getWorkOrderTypes() { let expectedOrderNumber = 0; for (const workOrderType of workOrderTypes) { if (workOrderType.orderNumber !== expectedOrderNumber) { - database - .prepare(`update WorkOrderTypes set orderNumber = ? where workOrderTypeId = ?`) - .run(expectedOrderNumber, workOrderType.workOrderTypeId); + updateRecordOrderNumber("WorkOrderTypes", workOrderType.workOrderTypeId, expectedOrderNumber, database); workOrderType.orderNumber = expectedOrderNumber; } expectedOrderNumber += 1; diff --git a/helpers/lotOccupancyDB/getWorkOrderTypes.ts b/helpers/lotOccupancyDB/getWorkOrderTypes.ts index b3bc5246..6609e110 100644 --- a/helpers/lotOccupancyDB/getWorkOrderTypes.ts +++ b/helpers/lotOccupancyDB/getWorkOrderTypes.ts @@ -3,6 +3,7 @@ import sqlite from "better-sqlite3"; import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; import type * as recordTypes from "../../types/recordTypes"; +import { updateRecordOrderNumber } from "./updateRecordOrderNumber.js"; export function getWorkOrderTypes(): recordTypes.WorkOrderType[] { const database = sqlite(databasePath); @@ -20,9 +21,12 @@ export function getWorkOrderTypes(): recordTypes.WorkOrderType[] { for (const workOrderType of workOrderTypes) { if (workOrderType.orderNumber !== expectedOrderNumber) { - database - .prepare(`update WorkOrderTypes set orderNumber = ? where workOrderTypeId = ?`) - .run(expectedOrderNumber, workOrderType.workOrderTypeId); + updateRecordOrderNumber( + "WorkOrderTypes", + workOrderType.workOrderTypeId, + expectedOrderNumber, + database + ); workOrderType.orderNumber = expectedOrderNumber; } diff --git a/helpers/lotOccupancyDB/updateFee.d.ts b/helpers/lotOccupancyDB/updateFee.d.ts index 4764c042..d5318193 100644 --- a/helpers/lotOccupancyDB/updateFee.d.ts +++ b/helpers/lotOccupancyDB/updateFee.d.ts @@ -1,4 +1,3 @@ -import sqlite from "better-sqlite3"; import type * as recordTypes from "../../types/recordTypes"; interface UpdateFeeForm { feeId: string; @@ -16,5 +15,4 @@ interface UpdateFeeForm { isRequired: "" | "1"; } export declare function updateFee(feeForm: UpdateFeeForm, requestSession: recordTypes.PartialSession): boolean; -export declare function updateFeeOrderNumber(feeId: number, orderNumber: number, connectedDatabase?: sqlite.Database): boolean; export default updateFee; diff --git a/helpers/lotOccupancyDB/updateFee.js b/helpers/lotOccupancyDB/updateFee.js index 46077896..15058a63 100644 --- a/helpers/lotOccupancyDB/updateFee.js +++ b/helpers/lotOccupancyDB/updateFee.js @@ -25,17 +25,4 @@ export function updateFee(feeForm, requestSession) { database.close(); return result.changes > 0; } -export function updateFeeOrderNumber(feeId, orderNumber, connectedDatabase) { - const database = connectedDatabase || - sqlite(databasePath, { - readonly: true - }); - const result = database - .prepare("update Fees set orderNumber = ? where feeId = ?") - .run(orderNumber, feeId); - if (!connectedDatabase) { - database.close(); - } - return result.changes > 0; -} export default updateFee; diff --git a/helpers/lotOccupancyDB/updateFee.ts b/helpers/lotOccupancyDB/updateFee.ts index e6d6cdcd..78ea7342 100644 --- a/helpers/lotOccupancyDB/updateFee.ts +++ b/helpers/lotOccupancyDB/updateFee.ts @@ -20,10 +20,7 @@ interface UpdateFeeForm { isRequired: "" | "1"; } -export function updateFee( - feeForm: UpdateFeeForm, - requestSession: recordTypes.PartialSession -): boolean { +export function updateFee(feeForm: UpdateFeeForm, requestSession: recordTypes.PartialSession): boolean { const database = sqlite(databasePath); const rightNowMillis = Date.now(); @@ -71,26 +68,4 @@ export function updateFee( return result.changes > 0; } -export function updateFeeOrderNumber( - feeId: number, - orderNumber: number, - connectedDatabase?: sqlite.Database -) { - const database = - connectedDatabase || - sqlite(databasePath, { - readonly: true - }); - - const result = database - .prepare("update Fees set orderNumber = ? where feeId = ?") - .run(orderNumber, feeId); - - if (!connectedDatabase) { - database.close(); - } - - return result.changes > 0; -} - export default updateFee; diff --git a/helpers/lotOccupancyDB/updateFeeCategory.d.ts b/helpers/lotOccupancyDB/updateFeeCategory.d.ts index b8d9570f..919c14f8 100644 --- a/helpers/lotOccupancyDB/updateFeeCategory.d.ts +++ b/helpers/lotOccupancyDB/updateFeeCategory.d.ts @@ -1,9 +1,7 @@ -import sqlite from "better-sqlite3"; import type * as recordTypes from "../../types/recordTypes"; interface UpdateFeeCategoryForm { feeCategoryId: number | string; feeCategory: string; } export declare function updateFeeCategory(feeCategoryForm: UpdateFeeCategoryForm, requestSession: recordTypes.PartialSession): boolean; -export declare function updateFeeCategoryOrderNumber(feeCategoryId: number, orderNumber: number, connectedDatabase?: sqlite.Database): boolean; export default updateFeeCategory; diff --git a/helpers/lotOccupancyDB/updateFeeCategory.js b/helpers/lotOccupancyDB/updateFeeCategory.js index 812e9eeb..12397bf5 100644 --- a/helpers/lotOccupancyDB/updateFeeCategory.js +++ b/helpers/lotOccupancyDB/updateFeeCategory.js @@ -1,21 +1,6 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; import { updateRecord } from "./updateRecord.js"; export function updateFeeCategory(feeCategoryForm, requestSession) { const success = updateRecord("FeeCategories", feeCategoryForm.feeCategoryId, feeCategoryForm.feeCategory, requestSession); return success; } -export function updateFeeCategoryOrderNumber(feeCategoryId, orderNumber, connectedDatabase) { - const database = connectedDatabase || - sqlite(databasePath, { - readonly: true - }); - const result = database - .prepare("update FeeCategories set orderNumber = ? where feeCategoryId = ?") - .run(orderNumber, feeCategoryId); - if (!connectedDatabase) { - database.close(); - } - return result.changes > 0; -} export default updateFeeCategory; diff --git a/helpers/lotOccupancyDB/updateFeeCategory.ts b/helpers/lotOccupancyDB/updateFeeCategory.ts index 4db46e71..fb020365 100644 --- a/helpers/lotOccupancyDB/updateFeeCategory.ts +++ b/helpers/lotOccupancyDB/updateFeeCategory.ts @@ -1,6 +1,3 @@ -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"; @@ -23,26 +20,4 @@ export function updateFeeCategory( return success; } -export function updateFeeCategoryOrderNumber( - feeCategoryId: number, - orderNumber: number, - connectedDatabase?: sqlite.Database -) { - const database = - connectedDatabase || - sqlite(databasePath, { - readonly: true - }); - - const result = database - .prepare("update FeeCategories set orderNumber = ? where feeCategoryId = ?") - .run(orderNumber, feeCategoryId); - - if (!connectedDatabase) { - database.close(); - } - - return result.changes > 0; -} - export default updateFeeCategory; diff --git a/helpers/lotOccupancyDB/updateRecordOrderNumber.d.ts b/helpers/lotOccupancyDB/updateRecordOrderNumber.d.ts new file mode 100644 index 00000000..c2914747 --- /dev/null +++ b/helpers/lotOccupancyDB/updateRecordOrderNumber.d.ts @@ -0,0 +1,4 @@ +import sqlite from "better-sqlite3"; +declare type RecordTable = "FeeCategories" | "Fees" | "LotOccupantTypes" | "LotStatuses" | "LotTypes" | "LotTypeFields" | "OccupancyTypes" | "OccupancyTypeFields" | "WorkOrderMilestoneTypes" | "WorkOrderTypes"; +export declare function updateRecordOrderNumber(recordTable: RecordTable, recordId: number, orderNumber: number, connectedDatabase: sqlite.Database): boolean; +export {}; diff --git a/helpers/lotOccupancyDB/updateRecordOrderNumber.js b/helpers/lotOccupancyDB/updateRecordOrderNumber.js new file mode 100644 index 00000000..76b79b63 --- /dev/null +++ b/helpers/lotOccupancyDB/updateRecordOrderNumber.js @@ -0,0 +1,20 @@ +const recordIdColumns = new Map(); +recordIdColumns.set("FeeCategories", "feeCategoryId"); +recordIdColumns.set("Fees", "feeId"); +recordIdColumns.set("LotOccupantTypes", "lotOccupantTypeId"); +recordIdColumns.set("LotStatuses", "lotStatusId"); +recordIdColumns.set("LotTypes", "lotTypeId"); +recordIdColumns.set("LotTypeFields", "lotTypeFieldId"); +recordIdColumns.set("OccupancyTypes", "occupancyTypeId"); +recordIdColumns.set("OccupancyTypeFields", "occupancyTypeFieldId"); +recordIdColumns.set("WorkOrderMilestoneTypes", "workOrderMilestoneTypeId"); +recordIdColumns.set("WorkOrderTypes", "workOrderTypeId"); +export function updateRecordOrderNumber(recordTable, recordId, orderNumber, connectedDatabase) { + const result = connectedDatabase + .prepare(`update ${recordTable} + set orderNumber = ? + where recordDelete_timeMillis is null + and ${recordIdColumns.get(recordTable)} = ?`) + .run(orderNumber, recordId); + return result.changes > 0; +} diff --git a/helpers/lotOccupancyDB/updateRecordOrderNumber.ts b/helpers/lotOccupancyDB/updateRecordOrderNumber.ts new file mode 100644 index 00000000..4ecb7171 --- /dev/null +++ b/helpers/lotOccupancyDB/updateRecordOrderNumber.ts @@ -0,0 +1,43 @@ +import sqlite from "better-sqlite3"; + +type RecordTable = + | "FeeCategories" + | "Fees" + | "LotOccupantTypes" + | "LotStatuses" + | "LotTypes" + | "LotTypeFields" + | "OccupancyTypes" + | "OccupancyTypeFields" + | "WorkOrderMilestoneTypes" + | "WorkOrderTypes"; + +const recordIdColumns: Map = new Map(); +recordIdColumns.set("FeeCategories", "feeCategoryId"); +recordIdColumns.set("Fees", "feeId"); +recordIdColumns.set("LotOccupantTypes", "lotOccupantTypeId"); +recordIdColumns.set("LotStatuses", "lotStatusId"); +recordIdColumns.set("LotTypes", "lotTypeId"); +recordIdColumns.set("LotTypeFields", "lotTypeFieldId"); +recordIdColumns.set("OccupancyTypes", "occupancyTypeId"); +recordIdColumns.set("OccupancyTypeFields", "occupancyTypeFieldId"); +recordIdColumns.set("WorkOrderMilestoneTypes", "workOrderMilestoneTypeId"); +recordIdColumns.set("WorkOrderTypes", "workOrderTypeId"); + +export function updateRecordOrderNumber( + recordTable: RecordTable, + recordId: number, + orderNumber: number, + connectedDatabase: sqlite.Database +): boolean { + const result = connectedDatabase + .prepare( + `update ${recordTable} + set orderNumber = ? + where recordDelete_timeMillis is null + and ${recordIdColumns.get(recordTable)} = ?` + ) + .run(orderNumber, recordId); + + return result.changes > 0; +}