From 0474631bf54af98e1ea229670711ee26ddcd5408 Mon Sep 17 00:00:00 2001 From: Dan Gowans Date: Tue, 29 Apr 2025 09:25:46 -0400 Subject: [PATCH] fix create cemeteries --- database/addCemetery.d.ts | 5 +- database/addCemetery.js | 5 +- database/addCemetery.ts | 12 ++- database/updateCemetery.d.ts | 4 +- database/updateCemetery.js | 17 +---- database/updateCemetery.ts | 73 ++++++------------- .../updateCemeteryDirectionsOfArrival.d.ts | 4 + database/updateCemeteryDirectionsOfArrival.js | 21 ++++++ database/updateCemeteryDirectionsOfArrival.ts | 51 +++++++++++++ handlers/cemeteries-get/new.js | 4 +- handlers/cemeteries-get/new.ts | 4 +- 11 files changed, 124 insertions(+), 76 deletions(-) create mode 100644 database/updateCemeteryDirectionsOfArrival.d.ts create mode 100644 database/updateCemeteryDirectionsOfArrival.js create mode 100644 database/updateCemeteryDirectionsOfArrival.ts diff --git a/database/addCemetery.d.ts b/database/addCemetery.d.ts index 6ed9b413..25a3a6bb 100644 --- a/database/addCemetery.d.ts +++ b/database/addCemetery.d.ts @@ -1,4 +1,5 @@ -export interface AddCemeteryForm { +import { type UpdateCemeteryDirectionsOfArrivalForm } from './updateCemeteryDirectionsOfArrival.js'; +export type AddCemeteryForm = UpdateCemeteryDirectionsOfArrivalForm & { cemeteryDescription: string; cemeteryKey: string; cemeteryName: string; @@ -12,5 +13,5 @@ export interface AddCemeteryForm { cemeteryPostalCode: string; cemeteryProvince: string; cemeteryPhoneNumber: string; -} +}; export default function addCemetery(addForm: AddCemeteryForm, user: User): number; diff --git a/database/addCemetery.js b/database/addCemetery.js index a28a0db3..7c12f901 100644 --- a/database/addCemetery.js +++ b/database/addCemetery.js @@ -1,5 +1,6 @@ import sqlite from 'better-sqlite3'; import { sunriseDB } from '../helpers/database.helpers.js'; +import updateCemeteryDirectionsOfArrival from './updateCemeteryDirectionsOfArrival.js'; export default function addCemetery(addForm, user) { const database = sqlite(sunriseDB); const rightNowMillis = Date.now(); @@ -15,6 +16,8 @@ export default function addCemetery(addForm, user) { recordUpdate_userName, recordUpdate_timeMillis) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`) .run(addForm.cemeteryName, addForm.cemeteryKey, addForm.cemeteryDescription, addForm.cemeterySvg, addForm.cemeteryLatitude === '' ? undefined : addForm.cemeteryLatitude, addForm.cemeteryLongitude === '' ? undefined : addForm.cemeteryLongitude, addForm.cemeteryAddress1, addForm.cemeteryAddress2, addForm.cemeteryCity, addForm.cemeteryProvince, addForm.cemeteryPostalCode, addForm.cemeteryPhoneNumber, addForm.parentCemeteryId === '' ? undefined : addForm.parentCemeteryId, user.userName, rightNowMillis, user.userName, rightNowMillis); + const cemeteryId = result.lastInsertRowid; + updateCemeteryDirectionsOfArrival(cemeteryId, addForm, database); database.close(); - return result.lastInsertRowid; + return cemeteryId; } diff --git a/database/addCemetery.ts b/database/addCemetery.ts index 023910d5..e27483db 100644 --- a/database/addCemetery.ts +++ b/database/addCemetery.ts @@ -2,7 +2,11 @@ import sqlite from 'better-sqlite3' import { sunriseDB } from '../helpers/database.helpers.js' -export interface AddCemeteryForm { +import updateCemeteryDirectionsOfArrival, { + type UpdateCemeteryDirectionsOfArrivalForm +} from './updateCemeteryDirectionsOfArrival.js' + +export type AddCemeteryForm = UpdateCemeteryDirectionsOfArrivalForm & { cemeteryDescription: string cemeteryKey: string cemeteryName: string @@ -62,7 +66,11 @@ export default function addCemetery( rightNowMillis ) + const cemeteryId = result.lastInsertRowid as number + + updateCemeteryDirectionsOfArrival(cemeteryId, addForm, database) + database.close() - return result.lastInsertRowid as number + return cemeteryId } diff --git a/database/updateCemetery.d.ts b/database/updateCemetery.d.ts index 6e22f5dc..8d11c311 100644 --- a/database/updateCemetery.d.ts +++ b/database/updateCemetery.d.ts @@ -1,5 +1,5 @@ -import { directionsOfArrival } from '../data/dataLists.js'; -export type UpdateCemeteryForm = Partial> & Partial> & { +import { type UpdateCemeteryDirectionsOfArrivalForm } from './updateCemeteryDirectionsOfArrival.js'; +export type UpdateCemeteryForm = UpdateCemeteryDirectionsOfArrivalForm & { cemeteryId: string; cemeteryDescription: string; cemeteryKey: string; diff --git a/database/updateCemetery.js b/database/updateCemetery.js index 02823cee..a5b0e128 100644 --- a/database/updateCemetery.js +++ b/database/updateCemetery.js @@ -1,6 +1,6 @@ import sqlite from 'better-sqlite3'; -import { directionsOfArrival } from '../data/dataLists.js'; import { sunriseDB } from '../helpers/database.helpers.js'; +import updateCemeteryDirectionsOfArrival from './updateCemeteryDirectionsOfArrival.js'; /** * Updates a cemetery in the database. * Be sure to rebuild burial site names after updating a cemetery. @@ -36,20 +36,7 @@ export default function updateCemetery(updateForm, user) { : updateForm.cemeteryLongitude, updateForm.cemeteryAddress1, updateForm.cemeteryAddress2, updateForm.cemeteryCity, updateForm.cemeteryProvince, updateForm.cemeteryPostalCode, updateForm.cemeteryPhoneNumber, updateForm.parentCemeteryId === '' ? undefined : updateForm.parentCemeteryId, user.userName, Date.now(), updateForm.cemeteryId); - database - .prepare(`delete from CemeteryDirectionsOfArrival - where cemeteryId = ?`) - .run(updateForm.cemeteryId); - for (const direction of directionsOfArrival) { - const directionDescriptionName = `directionOfArrivalDescription_${direction}`; - if (directionDescriptionName in updateForm) { - database - .prepare(`insert into CemeteryDirectionsOfArrival ( - cemeteryId, directionOfArrival, directionOfArrivalDescription) - values (?, ?, ?)`) - .run(updateForm.cemeteryId, direction, updateForm[directionDescriptionName] ?? ''); - } - } + updateCemeteryDirectionsOfArrival(updateForm.cemeteryId, updateForm, database); database.close(); return result.changes > 0; } diff --git a/database/updateCemetery.ts b/database/updateCemetery.ts index 13f7042a..04906920 100644 --- a/database/updateCemetery.ts +++ b/database/updateCemetery.ts @@ -1,39 +1,31 @@ import sqlite from 'better-sqlite3' -import { directionsOfArrival } from '../data/dataLists.js' import { sunriseDB } from '../helpers/database.helpers.js' -export type UpdateCemeteryForm = Partial< - Record< - `directionOfArrival_${(typeof directionsOfArrival)[number]}`, - (typeof directionsOfArrival)[number] - > -> & - Partial< - Record< - `directionOfArrivalDescription_${(typeof directionsOfArrival)[number]}`, - string - > - > & { - cemeteryId: string +import updateCemeteryDirectionsOfArrival, { + type UpdateCemeteryDirectionsOfArrivalForm +} from './updateCemeteryDirectionsOfArrival.js' - cemeteryDescription: string - cemeteryKey: string - cemeteryName: string - parentCemeteryId: string +export type UpdateCemeteryForm = UpdateCemeteryDirectionsOfArrivalForm & { + cemeteryId: string - cemeteryAddress1: string - cemeteryAddress2: string - cemeteryCity: string - cemeteryPostalCode: string - cemeteryProvince: string + cemeteryDescription: string + cemeteryKey: string + cemeteryName: string + parentCemeteryId: string - cemeteryPhoneNumber: string + cemeteryAddress1: string + cemeteryAddress2: string + cemeteryCity: string + cemeteryPostalCode: string + cemeteryProvince: string - cemeteryLatitude: string - cemeteryLongitude: string - cemeterySvg: string - } + cemeteryPhoneNumber: string + + cemeteryLatitude: string + cemeteryLongitude: string + cemeterySvg: string +} /** * Updates a cemetery in the database. @@ -94,30 +86,7 @@ export default function updateCemetery( updateForm.cemeteryId ) - database - .prepare( - `delete from CemeteryDirectionsOfArrival - where cemeteryId = ?` - ) - .run(updateForm.cemeteryId) - - for (const direction of directionsOfArrival) { - const directionDescriptionName = `directionOfArrivalDescription_${direction}` - - if (directionDescriptionName in updateForm) { - database - .prepare( - `insert into CemeteryDirectionsOfArrival ( - cemeteryId, directionOfArrival, directionOfArrivalDescription) - values (?, ?, ?)` - ) - .run( - updateForm.cemeteryId, - direction, - updateForm[directionDescriptionName] ?? '' - ) - } - } + updateCemeteryDirectionsOfArrival(updateForm.cemeteryId, updateForm, database) database.close() diff --git a/database/updateCemeteryDirectionsOfArrival.d.ts b/database/updateCemeteryDirectionsOfArrival.d.ts new file mode 100644 index 00000000..e3d531ad --- /dev/null +++ b/database/updateCemeteryDirectionsOfArrival.d.ts @@ -0,0 +1,4 @@ +import type sqlite from 'better-sqlite3'; +import { directionsOfArrival } from '../data/dataLists.js'; +export type UpdateCemeteryDirectionsOfArrivalForm = Partial> & Partial>; +export default function updateCemeteryDirectionsOfArrival(cemeteryId: number | string, updateForm: UpdateCemeteryDirectionsOfArrivalForm, database: sqlite.Database): number; diff --git a/database/updateCemeteryDirectionsOfArrival.js b/database/updateCemeteryDirectionsOfArrival.js new file mode 100644 index 00000000..d9a57a95 --- /dev/null +++ b/database/updateCemeteryDirectionsOfArrival.js @@ -0,0 +1,21 @@ +import { directionsOfArrival } from '../data/dataLists.js'; +export default function updateCemeteryDirectionsOfArrival(cemeteryId, updateForm, database) { + database + .prepare(`delete from CemeteryDirectionsOfArrival + where cemeteryId = ?`) + .run(cemeteryId); + let updateCount = 0; + for (const direction of directionsOfArrival) { + const directionDescriptionName = `directionOfArrivalDescription_${direction}`; + if (directionDescriptionName in updateForm) { + database + .prepare(`insert into CemeteryDirectionsOfArrival ( + cemeteryId, directionOfArrival, directionOfArrivalDescription) + values (?, ?, ?)`) + .run(cemeteryId, direction, updateForm[directionDescriptionName] ?? ''); + updateCount += 1; + } + } + database.close(); + return updateCount; +} diff --git a/database/updateCemeteryDirectionsOfArrival.ts b/database/updateCemeteryDirectionsOfArrival.ts new file mode 100644 index 00000000..643abbb9 --- /dev/null +++ b/database/updateCemeteryDirectionsOfArrival.ts @@ -0,0 +1,51 @@ +import type sqlite from 'better-sqlite3' + +import { directionsOfArrival } from '../data/dataLists.js' + +export type UpdateCemeteryDirectionsOfArrivalForm = Partial< + Record< + `directionOfArrival_${(typeof directionsOfArrival)[number]}`, + (typeof directionsOfArrival)[number] + > +> & + Partial< + Record< + `directionOfArrivalDescription_${(typeof directionsOfArrival)[number]}`, + string + > + > + +export default function updateCemeteryDirectionsOfArrival( + cemeteryId: number | string, + updateForm: UpdateCemeteryDirectionsOfArrivalForm, + database: sqlite.Database +): number { + database + .prepare( + `delete from CemeteryDirectionsOfArrival + where cemeteryId = ?` + ) + .run(cemeteryId) + + let updateCount = 0 + + for (const direction of directionsOfArrival) { + const directionDescriptionName = `directionOfArrivalDescription_${direction}` + + if (directionDescriptionName in updateForm) { + database + .prepare( + `insert into CemeteryDirectionsOfArrival ( + cemeteryId, directionOfArrival, directionOfArrivalDescription) + values (?, ?, ?)` + ) + .run(cemeteryId, direction, updateForm[directionDescriptionName] ?? '') + + updateCount += 1 + } + } + + database.close() + + return updateCount +} diff --git a/handlers/cemeteries-get/new.js b/handlers/cemeteries-get/new.js index b31cbd89..6e50ef26 100644 --- a/handlers/cemeteries-get/new.js +++ b/handlers/cemeteries-get/new.js @@ -1,6 +1,7 @@ import getCemeteries from '../../database/getCemeteries.js'; import { getConfigProperty } from '../../helpers/config.helpers.js'; import { getCemeterySVGs } from '../../helpers/images.helpers.js'; +import { defaultDirectionsOfArrival } from '../../database/getBurialSiteDirectionsOfArrival.js'; export default async function handler(_request, response) { const cemetery = { cemeteryCity: getConfigProperty('settings.cityDefault'), @@ -12,7 +13,8 @@ export default async function handler(_request, response) { cemeteryName: '', cemeteryPhoneNumber: '', cemeteryPostalCode: '', - childCemeteries: [] + childCemeteries: [], + directionsOfArrival: defaultDirectionsOfArrival }; const cemeteries = getCemeteries(); const cemeterySVGs = await getCemeterySVGs(); diff --git a/handlers/cemeteries-get/new.ts b/handlers/cemeteries-get/new.ts index e3f2dcf3..a62aa69d 100644 --- a/handlers/cemeteries-get/new.ts +++ b/handlers/cemeteries-get/new.ts @@ -4,6 +4,7 @@ import getCemeteries from '../../database/getCemeteries.js' import { getConfigProperty } from '../../helpers/config.helpers.js' import { getCemeterySVGs } from '../../helpers/images.helpers.js' import type { Cemetery } from '../../types/record.types.js' +import { defaultDirectionsOfArrival } from '../../database/getBurialSiteDirectionsOfArrival.js' export default async function handler( _request: Request, @@ -21,7 +22,8 @@ export default async function handler( cemeteryPhoneNumber: '', cemeteryPostalCode: '', - childCemeteries: [] + childCemeteries: [], + directionsOfArrival: defaultDirectionsOfArrival } const cemeteries = getCemeteries()