speed improvement

3.5min to 0.1sec
pull/11/head
Dan Gowans 2025-04-09 13:13:26 -04:00
parent a5a1c9f793
commit 04a4e6473b
2 changed files with 51 additions and 63 deletions

View File

@ -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
});
}

View File

@ -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
})
}