avoid order number updates

when deleted records are loaded
pull/11/head
Dan Gowans 2025-04-28 15:10:19 -04:00
parent 3c4c85df19
commit f96d975aa0
14 changed files with 120 additions and 84 deletions

View File

@ -3,6 +3,7 @@ import { sunriseDB } from '../helpers/database.helpers.js';
import { updateRecordOrderNumber } from './updateRecordOrderNumber.js'; import { updateRecordOrderNumber } from './updateRecordOrderNumber.js';
export default function getBurialSiteTypeFields(burialSiteTypeId, connectedDatabase) { export default function getBurialSiteTypeFields(burialSiteTypeId, connectedDatabase) {
const database = connectedDatabase ?? sqlite(sunriseDB); const database = connectedDatabase ?? sqlite(sunriseDB);
const updateOrderNumbers = !database.readonly;
const typeFields = database const typeFields = database
.prepare(`select burialSiteTypeFieldId, .prepare(`select burialSiteTypeFieldId,
burialSiteTypeField, fieldType, fieldValues, burialSiteTypeField, fieldType, fieldValues,
@ -12,6 +13,7 @@ export default function getBurialSiteTypeFields(burialSiteTypeId, connectedDatab
and burialSiteTypeId = ? and burialSiteTypeId = ?
order by orderNumber, burialSiteTypeField`) order by orderNumber, burialSiteTypeField`)
.all(burialSiteTypeId); .all(burialSiteTypeId);
if (updateOrderNumbers) {
let expectedOrderNumber = 0; let expectedOrderNumber = 0;
for (const typeField of typeFields) { for (const typeField of typeFields) {
if (typeField.orderNumber !== expectedOrderNumber) { if (typeField.orderNumber !== expectedOrderNumber) {
@ -20,6 +22,7 @@ export default function getBurialSiteTypeFields(burialSiteTypeId, connectedDatab
} }
expectedOrderNumber += 1; expectedOrderNumber += 1;
} }
}
if (connectedDatabase === undefined) { if (connectedDatabase === undefined) {
database.close(); database.close();
} }

View File

@ -11,6 +11,8 @@ export default function getBurialSiteTypeFields(
): BurialSiteTypeField[] { ): BurialSiteTypeField[] {
const database = connectedDatabase ?? sqlite(sunriseDB) const database = connectedDatabase ?? sqlite(sunriseDB)
const updateOrderNumbers = !database.readonly
const typeFields = database const typeFields = database
.prepare( .prepare(
`select burialSiteTypeFieldId, `select burialSiteTypeFieldId,
@ -23,6 +25,7 @@ export default function getBurialSiteTypeFields(
) )
.all(burialSiteTypeId) as BurialSiteTypeField[] .all(burialSiteTypeId) as BurialSiteTypeField[]
if (updateOrderNumbers) {
let expectedOrderNumber = 0 let expectedOrderNumber = 0
for (const typeField of typeFields) { for (const typeField of typeFields) {
@ -39,6 +42,7 @@ export default function getBurialSiteTypeFields(
expectedOrderNumber += 1 expectedOrderNumber += 1
} }
}
if (connectedDatabase === undefined) { if (connectedDatabase === undefined) {
database.close() database.close()

View File

@ -4,6 +4,7 @@ import getBurialSiteTypeFields from './getBurialSiteTypeFields.js';
import { updateRecordOrderNumber } from './updateRecordOrderNumber.js'; import { updateRecordOrderNumber } from './updateRecordOrderNumber.js';
export default function getBurialSiteTypes(includeDeleted = false) { export default function getBurialSiteTypes(includeDeleted = false) {
const database = sqlite(sunriseDB); const database = sqlite(sunriseDB);
const updateOrderNumbers = !database.readonly && !includeDeleted;
const burialSiteTypes = database const burialSiteTypes = database
.prepare(`select burialSiteTypeId, burialSiteType, orderNumber .prepare(`select burialSiteTypeId, burialSiteType, orderNumber
from BurialSiteTypes from BurialSiteTypes
@ -13,7 +14,7 @@ export default function getBurialSiteTypes(includeDeleted = false) {
let expectedOrderNumber = -1; let expectedOrderNumber = -1;
for (const burialSiteType of burialSiteTypes) { for (const burialSiteType of burialSiteTypes) {
expectedOrderNumber += 1; expectedOrderNumber += 1;
if (burialSiteType.orderNumber !== expectedOrderNumber) { if (updateOrderNumbers && burialSiteType.orderNumber !== expectedOrderNumber) {
updateRecordOrderNumber('BurialSiteTypes', burialSiteType.burialSiteTypeId, expectedOrderNumber, database); updateRecordOrderNumber('BurialSiteTypes', burialSiteType.burialSiteTypeId, expectedOrderNumber, database);
burialSiteType.orderNumber = expectedOrderNumber; burialSiteType.orderNumber = expectedOrderNumber;
} }

View File

@ -11,6 +11,8 @@ export default function getBurialSiteTypes(
): BurialSiteType[] { ): BurialSiteType[] {
const database = sqlite(sunriseDB) const database = sqlite(sunriseDB)
const updateOrderNumbers = !database.readonly && !includeDeleted
const burialSiteTypes = database const burialSiteTypes = database
.prepare( .prepare(
`select burialSiteTypeId, burialSiteType, orderNumber `select burialSiteTypeId, burialSiteType, orderNumber
@ -25,7 +27,7 @@ export default function getBurialSiteTypes(
for (const burialSiteType of burialSiteTypes) { for (const burialSiteType of burialSiteTypes) {
expectedOrderNumber += 1 expectedOrderNumber += 1
if (burialSiteType.orderNumber !== expectedOrderNumber) { if (updateOrderNumbers && burialSiteType.orderNumber !== expectedOrderNumber) {
updateRecordOrderNumber( updateRecordOrderNumber(
'BurialSiteTypes', 'BurialSiteTypes',
burialSiteType.burialSiteTypeId, burialSiteType.burialSiteTypeId,

View File

@ -3,12 +3,14 @@ import { sunriseDB } from '../helpers/database.helpers.js';
import { updateRecordOrderNumber } from './updateRecordOrderNumber.js'; import { updateRecordOrderNumber } from './updateRecordOrderNumber.js';
export default function getCommittalTypes(includeDeleted = false) { export default function getCommittalTypes(includeDeleted = false) {
const database = sqlite(sunriseDB); const database = sqlite(sunriseDB);
const updateOrderNumbers = !database.readonly && !includeDeleted;
const committalTypes = database const committalTypes = database
.prepare(`select committalTypeId, committalTypeKey, committalType, orderNumber .prepare(`select committalTypeId, committalTypeKey, committalType, orderNumber
from CommittalTypes from CommittalTypes
${includeDeleted ? '' : ' where recordDelete_timeMillis is null '} ${includeDeleted ? '' : ' where recordDelete_timeMillis is null '}
order by orderNumber, committalType, committalTypeId`) order by orderNumber, committalType, committalTypeId`)
.all(); .all();
if (updateOrderNumbers) {
let expectedOrderNumber = -1; let expectedOrderNumber = -1;
for (const committalType of committalTypes) { for (const committalType of committalTypes) {
expectedOrderNumber += 1; expectedOrderNumber += 1;
@ -17,6 +19,7 @@ export default function getCommittalTypes(includeDeleted = false) {
committalType.orderNumber = expectedOrderNumber; committalType.orderNumber = expectedOrderNumber;
} }
} }
}
database.close(); database.close();
return committalTypes; return committalTypes;
} }

View File

@ -10,6 +10,8 @@ export default function getCommittalTypes(
): CommittalType[] { ): CommittalType[] {
const database = sqlite(sunriseDB) const database = sqlite(sunriseDB)
const updateOrderNumbers = !database.readonly && !includeDeleted
const committalTypes = database const committalTypes = database
.prepare( .prepare(
`select committalTypeId, committalTypeKey, committalType, orderNumber `select committalTypeId, committalTypeKey, committalType, orderNumber
@ -19,6 +21,7 @@ export default function getCommittalTypes(
) )
.all() as CommittalType[] .all() as CommittalType[]
if (updateOrderNumbers) {
let expectedOrderNumber = -1 let expectedOrderNumber = -1
for (const committalType of committalTypes) { for (const committalType of committalTypes) {
@ -35,6 +38,7 @@ export default function getCommittalTypes(
committalType.orderNumber = expectedOrderNumber committalType.orderNumber = expectedOrderNumber
} }
} }
}
database.close() database.close()

View File

@ -3,6 +3,7 @@ import { sunriseDB } from '../helpers/database.helpers.js';
import { updateRecordOrderNumber } from './updateRecordOrderNumber.js'; import { updateRecordOrderNumber } from './updateRecordOrderNumber.js';
export default function getContractTypeFields(contractTypeId, connectedDatabase) { export default function getContractTypeFields(contractTypeId, connectedDatabase) {
const database = connectedDatabase ?? sqlite(sunriseDB); const database = connectedDatabase ?? sqlite(sunriseDB);
const updateOrderNumbers = !database.readonly && contractTypeId !== undefined;
const sqlParameters = []; const sqlParameters = [];
if ((contractTypeId ?? -1) !== -1) { if ((contractTypeId ?? -1) !== -1) {
sqlParameters.push(contractTypeId); sqlParameters.push(contractTypeId);
@ -17,6 +18,7 @@ export default function getContractTypeFields(contractTypeId, connectedDatabase)
: ' and contractTypeId = ?'} : ' and contractTypeId = ?'}
order by orderNumber, contractTypeField`) order by orderNumber, contractTypeField`)
.all(sqlParameters); .all(sqlParameters);
if (updateOrderNumbers) {
let expectedOrderNumber = 0; let expectedOrderNumber = 0;
for (const contractTypeField of contractTypeFields) { for (const contractTypeField of contractTypeFields) {
if (contractTypeField.orderNumber !== expectedOrderNumber) { if (contractTypeField.orderNumber !== expectedOrderNumber) {
@ -25,6 +27,7 @@ export default function getContractTypeFields(contractTypeId, connectedDatabase)
} }
expectedOrderNumber += 1; expectedOrderNumber += 1;
} }
}
if (connectedDatabase === undefined) { if (connectedDatabase === undefined) {
database.close(); database.close();
} }

View File

@ -11,6 +11,8 @@ export default function getContractTypeFields(
): ContractTypeField[] { ): ContractTypeField[] {
const database = connectedDatabase ?? sqlite(sunriseDB) const database = connectedDatabase ?? sqlite(sunriseDB)
const updateOrderNumbers = !database.readonly && contractTypeId !== undefined
const sqlParameters: unknown[] = [] const sqlParameters: unknown[] = []
if ((contractTypeId ?? -1) !== -1) { if ((contractTypeId ?? -1) !== -1) {
@ -32,6 +34,7 @@ export default function getContractTypeFields(
) )
.all(sqlParameters) as ContractTypeField[] .all(sqlParameters) as ContractTypeField[]
if (updateOrderNumbers) {
let expectedOrderNumber = 0 let expectedOrderNumber = 0
for (const contractTypeField of contractTypeFields) { for (const contractTypeField of contractTypeFields) {
@ -48,6 +51,7 @@ export default function getContractTypeFields(
expectedOrderNumber += 1 expectedOrderNumber += 1
} }
}
if (connectedDatabase === undefined) { if (connectedDatabase === undefined) {
database.close() database.close()

View File

@ -3,8 +3,10 @@ import { sunriseDB } from '../helpers/database.helpers.js';
import getFees from './getFees.js'; import getFees from './getFees.js';
import { updateRecordOrderNumber } from './updateRecordOrderNumber.js'; import { updateRecordOrderNumber } from './updateRecordOrderNumber.js';
export default function getFeeCategories(filters, options, connectedDatabase) { export default function getFeeCategories(filters, options, connectedDatabase) {
const updateOrderNumbers = !(filters.burialSiteTypeId || filters.contractTypeId) && options.includeFees; const database = connectedDatabase ?? sqlite(sunriseDB);
const database = sqlite(sunriseDB); const updateOrderNumbers = !database.readonly &&
!(filters.burialSiteTypeId || filters.contractTypeId) &&
options.includeFees;
let sqlWhereClause = ' where recordDelete_timeMillis is null'; let sqlWhereClause = ' where recordDelete_timeMillis is null';
const sqlParameters = []; const sqlParameters = [];
if ((filters.contractTypeId ?? '') !== '') { if ((filters.contractTypeId ?? '') !== '') {
@ -18,7 +20,7 @@ export default function getFeeCategories(filters, options, connectedDatabase) {
sqlParameters.push(filters.burialSiteTypeId); sqlParameters.push(filters.burialSiteTypeId);
} }
if ((filters.feeCategoryId ?? '') !== '') { if ((filters.feeCategoryId ?? '') !== '') {
sqlWhereClause += ` and feeCategoryId = ?`; sqlWhereClause += ' and feeCategoryId = ?';
sqlParameters.push(filters.feeCategoryId); sqlParameters.push(filters.feeCategoryId);
} }
const feeCategories = database const feeCategories = database

View File

@ -21,10 +21,12 @@ export default function getFeeCategories(
options: GetFeeCategoriesOptions, options: GetFeeCategoriesOptions,
connectedDatabase?: sqlite.Database connectedDatabase?: sqlite.Database
): FeeCategory[] { ): FeeCategory[] {
const updateOrderNumbers = const database = connectedDatabase ?? sqlite(sunriseDB)
!(filters.burialSiteTypeId || filters.contractTypeId) && options.includeFees
const database = sqlite(sunriseDB) const updateOrderNumbers =
!database.readonly &&
!(filters.burialSiteTypeId || filters.contractTypeId) &&
options.includeFees
let sqlWhereClause = ' where recordDelete_timeMillis is null' let sqlWhereClause = ' where recordDelete_timeMillis is null'
@ -45,7 +47,7 @@ export default function getFeeCategories(
} }
if ((filters.feeCategoryId ?? '') !== '') { if ((filters.feeCategoryId ?? '') !== '') {
sqlWhereClause += ` and feeCategoryId = ?` sqlWhereClause += ' and feeCategoryId = ?'
sqlParameters.push(filters.feeCategoryId) sqlParameters.push(filters.feeCategoryId)
} }

View File

@ -2,8 +2,9 @@ import sqlite from 'better-sqlite3';
import { sunriseDB } from '../helpers/database.helpers.js'; import { sunriseDB } from '../helpers/database.helpers.js';
import { updateRecordOrderNumber } from './updateRecordOrderNumber.js'; import { updateRecordOrderNumber } from './updateRecordOrderNumber.js';
export default function getFees(feeCategoryId, additionalFilters, connectedDatabase) { export default function getFees(feeCategoryId, additionalFilters, connectedDatabase) {
const updateOrderNumbers = !(additionalFilters.burialSiteTypeId || additionalFilters.contractTypeId);
const database = connectedDatabase ?? sqlite(sunriseDB); const database = connectedDatabase ?? sqlite(sunriseDB);
const updateOrderNumbers = !database.readonly &&
!(additionalFilters.burialSiteTypeId || additionalFilters.contractTypeId);
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]; const sqlParameters = [feeCategoryId];
if (additionalFilters.contractTypeId) { if (additionalFilters.contractTypeId) {

View File

@ -15,12 +15,12 @@ export default function getFees(
additionalFilters: GetFeesFilters, additionalFilters: GetFeesFilters,
connectedDatabase?: sqlite.Database connectedDatabase?: sqlite.Database
): Fee[] { ): Fee[] {
const updateOrderNumbers = !(
additionalFilters.burialSiteTypeId || additionalFilters.contractTypeId
)
const database = connectedDatabase ?? sqlite(sunriseDB) const database = connectedDatabase ?? sqlite(sunriseDB)
const updateOrderNumbers =
!database.readonly &&
!(additionalFilters.burialSiteTypeId || additionalFilters.contractTypeId)
let sqlWhereClause = let sqlWhereClause =
' where f.recordDelete_timeMillis is null and f.feeCategoryId = ?' ' where f.recordDelete_timeMillis is null and f.feeCategoryId = ?'

View File

@ -3,6 +3,7 @@ import { sunriseDB } from '../helpers/database.helpers.js';
import { updateRecordOrderNumber } from './updateRecordOrderNumber.js'; import { updateRecordOrderNumber } from './updateRecordOrderNumber.js';
export default function getIntermentContainerTypes(includeDeleted = false) { export default function getIntermentContainerTypes(includeDeleted = false) {
const database = sqlite(sunriseDB); const database = sqlite(sunriseDB);
const updateOrderNumbers = !database.readonly && !includeDeleted;
const containerTypes = database const containerTypes = database
.prepare(`select intermentContainerTypeId, intermentContainerType, intermentContainerTypeKey, .prepare(`select intermentContainerTypeId, intermentContainerType, intermentContainerTypeKey,
isCremationType, orderNumber isCremationType, orderNumber
@ -10,6 +11,7 @@ export default function getIntermentContainerTypes(includeDeleted = false) {
${includeDeleted ? '' : ' where recordDelete_timeMillis is null '} ${includeDeleted ? '' : ' where recordDelete_timeMillis is null '}
order by isCremationType, orderNumber, intermentContainerType, intermentContainerTypeId`) order by isCremationType, orderNumber, intermentContainerType, intermentContainerTypeId`)
.all(); .all();
if (updateOrderNumbers) {
let expectedOrderNumber = -1; let expectedOrderNumber = -1;
for (const containerType of containerTypes) { for (const containerType of containerTypes) {
expectedOrderNumber += 1; expectedOrderNumber += 1;
@ -18,6 +20,7 @@ export default function getIntermentContainerTypes(includeDeleted = false) {
containerType.orderNumber = expectedOrderNumber; containerType.orderNumber = expectedOrderNumber;
} }
} }
}
database.close(); database.close();
return containerTypes; return containerTypes;
} }

View File

@ -10,6 +10,8 @@ export default function getIntermentContainerTypes(
): IntermentContainerType[] { ): IntermentContainerType[] {
const database = sqlite(sunriseDB) const database = sqlite(sunriseDB)
const updateOrderNumbers = !database.readonly && !includeDeleted
const containerTypes = database const containerTypes = database
.prepare( .prepare(
`select intermentContainerTypeId, intermentContainerType, intermentContainerTypeKey, `select intermentContainerTypeId, intermentContainerType, intermentContainerTypeKey,
@ -20,6 +22,7 @@ export default function getIntermentContainerTypes(
) )
.all() as IntermentContainerType[] .all() as IntermentContainerType[]
if (updateOrderNumbers) {
let expectedOrderNumber = -1 let expectedOrderNumber = -1
for (const containerType of containerTypes) { for (const containerType of containerTypes) {
@ -36,6 +39,7 @@ export default function getIntermentContainerTypes(
containerType.orderNumber = expectedOrderNumber containerType.orderNumber = expectedOrderNumber
} }
} }
}
database.close() database.close()