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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,20 +1,12 @@
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
>
> & {
import updateCemeteryDirectionsOfArrival, {
type UpdateCemeteryDirectionsOfArrivalForm
} from './updateCemeteryDirectionsOfArrival.js'
export type UpdateCemeteryForm = UpdateCemeteryDirectionsOfArrivalForm & {
cemeteryId: string
cemeteryDescription: string
@ -33,7 +25,7 @@ export type UpdateCemeteryForm = Partial<
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()

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 { 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();

View File

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