diff --git a/database/rebuildBurialSiteNames.js b/database/rebuildBurialSiteNames.js index e0f31947..b328778e 100644 --- a/database/rebuildBurialSiteNames.js +++ b/database/rebuildBurialSiteNames.js @@ -1,5 +1,4 @@ import { buildBurialSiteName } from '../helpers/burialSites.helpers.js'; -import getBurialSites from './getBurialSites.js'; import getCemetery from './getCemetery.js'; import { acquireConnection } from './pool.js'; export default async function rebuildBurialSiteNames(cemeteryId, user, connectedDatabase) { @@ -14,32 +13,27 @@ export default async function rebuildBurialSiteNames(cemeteryId, user, connected } return 0; } - /* - * Get the burial sites - */ - const burialSites = await getBurialSites({ - cemeteryId - }, { - limit: -1, - offset: 0 - }, database); - let updateCount = 0; - for (const burialSite of burialSites.burialSites) { - const burialSiteName = buildBurialSiteName(cemetery.cemeteryKey, burialSite); - if (burialSiteName !== burialSite.burialSiteName) { - const result = database - .prepare(`update BurialSites - set burialSiteName = ?, - recordUpdate_userName = ?, - recordUpdate_timeMillis = ? - where burialSiteId = ? - and recordDelete_timeMillis is null`) - .run(burialSiteName, user.userName, Date.now(), burialSite.burialSiteId); - updateCount += result.changes; - } - } + const result = database + .function('buildBurialSiteName', buildBurialSiteNameUserFunction) + .prepare(`update BurialSites + set burialSiteName = buildBurialSiteName(?, burialSiteNameSegment1, burialSiteNameSegment2, burialSiteNameSegment3, burialSiteNameSegment4, burialSiteNameSegment5), + recordUpdate_userName = ?, + recordUpdate_timeMillis = ? + where cemeteryId = ? + and recordDelete_timeMillis is null`) + .run(cemetery.cemeteryKey, user.userName, Date.now(), cemeteryId); if (connectedDatabase === undefined) { database.release(); } - return updateCount; + return result.changes; +} +// eslint-disable-next-line @typescript-eslint/max-params +function buildBurialSiteNameUserFunction(cemeteryKey, burialSiteNameSegment1, burialSiteNameSegment2, burialSiteNameSegment3, burialSiteNameSegment4, burialSiteNameSegment5) { + return buildBurialSiteName(cemeteryKey, { + burialSiteNameSegment1, + burialSiteNameSegment2, + burialSiteNameSegment3, + burialSiteNameSegment4, + burialSiteNameSegment5 + }); } diff --git a/database/rebuildBurialSiteNames.ts b/database/rebuildBurialSiteNames.ts index 9b728f8f..718c95ce 100644 --- a/database/rebuildBurialSiteNames.ts +++ b/database/rebuildBurialSiteNames.ts @@ -2,7 +2,6 @@ import type { PoolConnection } from 'better-sqlite-pool' import { buildBurialSiteName } from '../helpers/burialSites.helpers.js' -import getBurialSites from './getBurialSites.js' import getCemetery from './getCemetery.js' import { acquireConnection } from './pool.js' @@ -27,44 +26,39 @@ export default async function rebuildBurialSiteNames( return 0 } - /* - * Get the burial sites - */ - - const burialSites = await getBurialSites( - { - cemeteryId - }, - { - limit: -1, - offset: 0 - }, - database - ) - - let updateCount = 0 - - for (const burialSite of burialSites.burialSites) { - const burialSiteName = buildBurialSiteName(cemetery.cemeteryKey, burialSite) - - if (burialSiteName !== burialSite.burialSiteName) { - const result = database - .prepare( - `update BurialSites - set burialSiteName = ?, - recordUpdate_userName = ?, - recordUpdate_timeMillis = ? - where burialSiteId = ? - and recordDelete_timeMillis is null` - ) - .run(burialSiteName, user.userName, Date.now(), burialSite.burialSiteId) - - updateCount += result.changes - } - } + const result = database + .function('buildBurialSiteName', buildBurialSiteNameUserFunction) + .prepare( + `update BurialSites + set burialSiteName = buildBurialSiteName(?, burialSiteNameSegment1, burialSiteNameSegment2, burialSiteNameSegment3, burialSiteNameSegment4, burialSiteNameSegment5), + recordUpdate_userName = ?, + recordUpdate_timeMillis = ? + where cemeteryId = ? + and recordDelete_timeMillis is null` + ) + .run(cemetery.cemeteryKey, user.userName, Date.now(), cemeteryId) if (connectedDatabase === undefined) { database.release() } - return updateCount + + return result.changes +} + +// eslint-disable-next-line @typescript-eslint/max-params +function buildBurialSiteNameUserFunction( + cemeteryKey: string, + burialSiteNameSegment1: string, + burialSiteNameSegment2: string, + burialSiteNameSegment3: string, + burialSiteNameSegment4: string, + burialSiteNameSegment5: string +): string { + return buildBurialSiteName(cemeteryKey, { + burialSiteNameSegment1, + burialSiteNameSegment2, + burialSiteNameSegment3, + burialSiteNameSegment4, + burialSiteNameSegment5 + }) }