sunrise-cms/database/rebuildBurialSiteNames.ts

65 lines
1.7 KiB
TypeScript

import sqlite from 'better-sqlite3'
import { buildBurialSiteName } from '../helpers/burialSites.helpers.js'
import { sunriseDB } from '../helpers/database.helpers.js'
import getCemetery from './getCemetery.js'
export default function rebuildBurialSiteNames(
cemeteryId: number | string,
user: User,
connectedDatabase?: sqlite.Database
): number {
const database = connectedDatabase ?? sqlite(sunriseDB)
/*
* Get the cemetery key
*/
const cemetery = getCemetery(cemeteryId, database)
if (cemetery === undefined) {
if (connectedDatabase === undefined) {
database.close()
}
return 0
}
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.close()
}
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
})
}