fix create cemeteries

pull/11/head
Dan Gowans 2025-04-29 09:25:46 -04:00
parent 927334d954
commit 0474631bf5
11 changed files with 124 additions and 76 deletions

View File

@ -1,4 +1,5 @@
export interface AddCemeteryForm { import { type UpdateCemeteryDirectionsOfArrivalForm } from './updateCemeteryDirectionsOfArrival.js';
export type AddCemeteryForm = UpdateCemeteryDirectionsOfArrivalForm & {
cemeteryDescription: string; cemeteryDescription: string;
cemeteryKey: string; cemeteryKey: string;
cemeteryName: string; cemeteryName: string;
@ -12,5 +13,5 @@ export interface AddCemeteryForm {
cemeteryPostalCode: string; cemeteryPostalCode: string;
cemeteryProvince: string; cemeteryProvince: string;
cemeteryPhoneNumber: string; cemeteryPhoneNumber: string;
} };
export default function addCemetery(addForm: AddCemeteryForm, user: User): number; export default function addCemetery(addForm: AddCemeteryForm, user: User): number;

View File

@ -1,5 +1,6 @@
import sqlite from 'better-sqlite3'; import sqlite from 'better-sqlite3';
import { sunriseDB } from '../helpers/database.helpers.js'; import { sunriseDB } from '../helpers/database.helpers.js';
import updateCemeteryDirectionsOfArrival from './updateCemeteryDirectionsOfArrival.js';
export default function addCemetery(addForm, user) { export default function addCemetery(addForm, user) {
const database = sqlite(sunriseDB); const database = sqlite(sunriseDB);
const rightNowMillis = Date.now(); const rightNowMillis = Date.now();
@ -15,6 +16,8 @@ export default function addCemetery(addForm, user) {
recordUpdate_userName, recordUpdate_timeMillis) recordUpdate_userName, recordUpdate_timeMillis)
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`) 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); .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(); database.close();
return result.lastInsertRowid; return cemeteryId;
} }

View File

@ -2,7 +2,11 @@ import sqlite from 'better-sqlite3'
import { sunriseDB } from '../helpers/database.helpers.js' import { sunriseDB } from '../helpers/database.helpers.js'
export interface AddCemeteryForm { import updateCemeteryDirectionsOfArrival, {
type UpdateCemeteryDirectionsOfArrivalForm
} from './updateCemeteryDirectionsOfArrival.js'
export type AddCemeteryForm = UpdateCemeteryDirectionsOfArrivalForm & {
cemeteryDescription: string cemeteryDescription: string
cemeteryKey: string cemeteryKey: string
cemeteryName: string cemeteryName: string
@ -62,7 +66,11 @@ export default function addCemetery(
rightNowMillis rightNowMillis
) )
const cemeteryId = result.lastInsertRowid as number
updateCemeteryDirectionsOfArrival(cemeteryId, addForm, database)
database.close() database.close()
return result.lastInsertRowid as number return cemeteryId
} }

View File

@ -1,5 +1,5 @@
import { directionsOfArrival } from '../data/dataLists.js'; import { type UpdateCemeteryDirectionsOfArrivalForm } from './updateCemeteryDirectionsOfArrival.js';
export type UpdateCemeteryForm = Partial<Record<`directionOfArrival_${(typeof directionsOfArrival)[number]}`, (typeof directionsOfArrival)[number]>> & Partial<Record<`directionOfArrivalDescription_${(typeof directionsOfArrival)[number]}`, string>> & { export type UpdateCemeteryForm = UpdateCemeteryDirectionsOfArrivalForm & {
cemeteryId: string; cemeteryId: string;
cemeteryDescription: string; cemeteryDescription: string;
cemeteryKey: string; cemeteryKey: string;

View File

@ -1,6 +1,6 @@
import sqlite from 'better-sqlite3'; import sqlite from 'better-sqlite3';
import { directionsOfArrival } from '../data/dataLists.js';
import { sunriseDB } from '../helpers/database.helpers.js'; import { sunriseDB } from '../helpers/database.helpers.js';
import updateCemeteryDirectionsOfArrival from './updateCemeteryDirectionsOfArrival.js';
/** /**
* Updates a cemetery in the database. * Updates a cemetery in the database.
* Be sure to rebuild burial site names after updating a cemetery. * 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 === '' : updateForm.cemeteryLongitude, updateForm.cemeteryAddress1, updateForm.cemeteryAddress2, updateForm.cemeteryCity, updateForm.cemeteryProvince, updateForm.cemeteryPostalCode, updateForm.cemeteryPhoneNumber, updateForm.parentCemeteryId === ''
? undefined ? undefined
: updateForm.parentCemeteryId, user.userName, Date.now(), updateForm.cemeteryId); : updateForm.parentCemeteryId, user.userName, Date.now(), updateForm.cemeteryId);
database updateCemeteryDirectionsOfArrival(updateForm.cemeteryId, updateForm, 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] ?? '');
}
}
database.close(); database.close();
return result.changes > 0; return result.changes > 0;
} }

View File

@ -1,20 +1,12 @@
import sqlite from 'better-sqlite3' import sqlite from 'better-sqlite3'
import { directionsOfArrival } from '../data/dataLists.js'
import { sunriseDB } from '../helpers/database.helpers.js' import { sunriseDB } from '../helpers/database.helpers.js'
export type UpdateCemeteryForm = Partial< import updateCemeteryDirectionsOfArrival, {
Record< type UpdateCemeteryDirectionsOfArrivalForm
`directionOfArrival_${(typeof directionsOfArrival)[number]}`, } from './updateCemeteryDirectionsOfArrival.js'
(typeof directionsOfArrival)[number]
> export type UpdateCemeteryForm = UpdateCemeteryDirectionsOfArrivalForm & {
> &
Partial<
Record<
`directionOfArrivalDescription_${(typeof directionsOfArrival)[number]}`,
string
>
> & {
cemeteryId: string cemeteryId: string
cemeteryDescription: string cemeteryDescription: string
@ -33,7 +25,7 @@ export type UpdateCemeteryForm = Partial<
cemeteryLatitude: string cemeteryLatitude: string
cemeteryLongitude: string cemeteryLongitude: string
cemeterySvg: string cemeterySvg: string
} }
/** /**
* Updates a cemetery in the database. * Updates a cemetery in the database.
@ -94,30 +86,7 @@ export default function updateCemetery(
updateForm.cemeteryId updateForm.cemeteryId
) )
database updateCemeteryDirectionsOfArrival(updateForm.cemeteryId, updateForm, 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] ?? ''
)
}
}
database.close() database.close()

View File

@ -0,0 +1,4 @@
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;

View File

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

View File

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

View File

@ -1,6 +1,7 @@
import getCemeteries from '../../database/getCemeteries.js'; import getCemeteries from '../../database/getCemeteries.js';
import { getConfigProperty } from '../../helpers/config.helpers.js'; import { getConfigProperty } from '../../helpers/config.helpers.js';
import { getCemeterySVGs } from '../../helpers/images.helpers.js'; import { getCemeterySVGs } from '../../helpers/images.helpers.js';
import { defaultDirectionsOfArrival } from '../../database/getBurialSiteDirectionsOfArrival.js';
export default async function handler(_request, response) { export default async function handler(_request, response) {
const cemetery = { const cemetery = {
cemeteryCity: getConfigProperty('settings.cityDefault'), cemeteryCity: getConfigProperty('settings.cityDefault'),
@ -12,7 +13,8 @@ export default async function handler(_request, response) {
cemeteryName: '', cemeteryName: '',
cemeteryPhoneNumber: '', cemeteryPhoneNumber: '',
cemeteryPostalCode: '', cemeteryPostalCode: '',
childCemeteries: [] childCemeteries: [],
directionsOfArrival: defaultDirectionsOfArrival
}; };
const cemeteries = getCemeteries(); const cemeteries = getCemeteries();
const cemeterySVGs = await getCemeterySVGs(); const cemeterySVGs = await getCemeterySVGs();

View File

@ -4,6 +4,7 @@ import getCemeteries from '../../database/getCemeteries.js'
import { getConfigProperty } from '../../helpers/config.helpers.js' import { getConfigProperty } from '../../helpers/config.helpers.js'
import { getCemeterySVGs } from '../../helpers/images.helpers.js' import { getCemeterySVGs } from '../../helpers/images.helpers.js'
import type { Cemetery } from '../../types/record.types.js' import type { Cemetery } from '../../types/record.types.js'
import { defaultDirectionsOfArrival } from '../../database/getBurialSiteDirectionsOfArrival.js'
export default async function handler( export default async function handler(
_request: Request, _request: Request,
@ -21,7 +22,8 @@ export default async function handler(
cemeteryPhoneNumber: '', cemeteryPhoneNumber: '',
cemeteryPostalCode: '', cemeteryPostalCode: '',
childCemeteries: [] childCemeteries: [],
directionsOfArrival: defaultDirectionsOfArrival
} }
const cemeteries = getCemeteries() const cemeteries = getCemeteries()