From 656f1b052e9a98b08ceeb1393e8aba057243db63 Mon Sep 17 00:00:00 2001 From: Dan Gowans Date: Wed, 30 Apr 2025 08:45:39 -0400 Subject: [PATCH] linting --- database/addWorkOrderMilestone.d.ts | 9 ++++--- database/addWorkOrderMilestone.ts | 18 ++++++++----- database/completeWorkOrderMilestone.d.ts | 5 ++-- database/completeWorkOrderMilestone.js | 12 +++++---- database/completeWorkOrderMilestone.ts | 34 +++++++++++++++--------- database/deleteRecord.js | 7 +++-- database/deleteRecord.ts | 15 ++++++++--- database/updateRecord.js | 8 ++++-- database/updateRecord.ts | 10 +++++-- helpers/functions.cache.d.ts | 4 +-- helpers/functions.cache.js | 14 ++++++++++ helpers/functions.cache.ts | 29 +++++++++++--------- 12 files changed, 109 insertions(+), 56 deletions(-) diff --git a/database/addWorkOrderMilestone.d.ts b/database/addWorkOrderMilestone.d.ts index 9659d80c..93818a28 100644 --- a/database/addWorkOrderMilestone.d.ts +++ b/database/addWorkOrderMilestone.d.ts @@ -1,10 +1,11 @@ +import { type DateString, type TimeString } from '@cityssm/utils-datetime'; export interface AddWorkOrderMilestoneForm { workOrderId: number | string; workOrderMilestoneTypeId: number | string; - workOrderMilestoneDateString: string; - workOrderMilestoneTimeString?: string; + workOrderMilestoneDateString: '' | DateString; + workOrderMilestoneTimeString?: '' | TimeString; workOrderMilestoneDescription: string; - workOrderMilestoneCompletionDateString?: string; - workOrderMilestoneCompletionTimeString?: string; + workOrderMilestoneCompletionDateString?: '' | DateString; + workOrderMilestoneCompletionTimeString?: '' | TimeString; } export default function addWorkOrderMilestone(milestoneForm: AddWorkOrderMilestoneForm, user: User): number; diff --git a/database/addWorkOrderMilestone.ts b/database/addWorkOrderMilestone.ts index 311bcbfc..3c52532c 100644 --- a/database/addWorkOrderMilestone.ts +++ b/database/addWorkOrderMilestone.ts @@ -1,4 +1,6 @@ import { + type DateString, + type TimeString, dateStringToInteger, timeStringToInteger } from '@cityssm/utils-datetime' @@ -10,13 +12,13 @@ export interface AddWorkOrderMilestoneForm { workOrderId: number | string workOrderMilestoneTypeId: number | string - workOrderMilestoneDateString: string - workOrderMilestoneTimeString?: string + workOrderMilestoneDateString: '' | DateString + workOrderMilestoneTimeString?: '' | TimeString workOrderMilestoneDescription: string - workOrderMilestoneCompletionDateString?: string - workOrderMilestoneCompletionTimeString?: string + workOrderMilestoneCompletionDateString?: '' | DateString + workOrderMilestoneCompletionTimeString?: '' | TimeString } export default function addWorkOrderMilestone( @@ -48,17 +50,19 @@ export default function addWorkOrderMilestone( : dateStringToInteger(milestoneForm.workOrderMilestoneDateString), (milestoneForm.workOrderMilestoneTimeString ?? '') === '' ? 0 - : timeStringToInteger(milestoneForm.workOrderMilestoneTimeString!), + : timeStringToInteger( + milestoneForm.workOrderMilestoneTimeString as TimeString + ), milestoneForm.workOrderMilestoneDescription, (milestoneForm.workOrderMilestoneCompletionDateString ?? '') === '' ? undefined : dateStringToInteger( - milestoneForm.workOrderMilestoneCompletionDateString! + milestoneForm.workOrderMilestoneCompletionDateString as DateString ), (milestoneForm.workOrderMilestoneCompletionTimeString ?? '') === '' ? undefined : timeStringToInteger( - milestoneForm.workOrderMilestoneCompletionTimeString! + milestoneForm.workOrderMilestoneCompletionTimeString as TimeString ), user.userName, rightNowMillis, diff --git a/database/completeWorkOrderMilestone.d.ts b/database/completeWorkOrderMilestone.d.ts index 60b2a5f1..55a967b9 100644 --- a/database/completeWorkOrderMilestone.d.ts +++ b/database/completeWorkOrderMilestone.d.ts @@ -1,6 +1,7 @@ +import { type DateString, type TimeString } from '@cityssm/utils-datetime'; export interface CompleteWorkOrderMilestoneForm { workOrderMilestoneId: number | string; - workOrderMilestoneCompletionDateString?: string; - workOrderMilestoneCompletionTimeString?: string; + workOrderMilestoneCompletionDateString?: '' | DateString; + workOrderMilestoneCompletionTimeString?: '' | TimeString; } export default function completeWorkOrderMilestone(milestoneForm: CompleteWorkOrderMilestoneForm, user: User): boolean; diff --git a/database/completeWorkOrderMilestone.js b/database/completeWorkOrderMilestone.js index 8ca1f786..cd22fa8f 100644 --- a/database/completeWorkOrderMilestone.js +++ b/database/completeWorkOrderMilestone.js @@ -4,6 +4,12 @@ import { sunriseDB } from '../helpers/database.helpers.js'; export default function completeWorkOrderMilestone(milestoneForm, user) { const rightNow = new Date(); const database = sqlite(sunriseDB); + const completionDate = (milestoneForm.workOrderMilestoneCompletionDateString ?? '') === '' + ? dateToInteger(rightNow) + : dateStringToInteger(milestoneForm.workOrderMilestoneCompletionDateString); + const completionTime = (milestoneForm.workOrderMilestoneCompletionTimeString ?? '') === '' + ? dateToTimeInteger(rightNow) + : timeStringToInteger(milestoneForm.workOrderMilestoneCompletionTimeString); const result = database .prepare(`update WorkOrderMilestones set workOrderMilestoneCompletionDate = ?, @@ -11,11 +17,7 @@ export default function completeWorkOrderMilestone(milestoneForm, user) { recordUpdate_userName = ?, recordUpdate_timeMillis = ? where workOrderMilestoneId = ?`) - .run((milestoneForm.workOrderMilestoneCompletionDateString ?? '') === '' - ? dateToInteger(rightNow) - : dateStringToInteger(milestoneForm.workOrderMilestoneCompletionDateString), (milestoneForm.workOrderMilestoneCompletionTimeString ?? '') === '' - ? dateToTimeInteger(rightNow) - : timeStringToInteger(milestoneForm.workOrderMilestoneCompletionTimeString), user.userName, rightNow.getTime(), milestoneForm.workOrderMilestoneId); + .run(completionDate, completionTime, user.userName, rightNow.getTime(), milestoneForm.workOrderMilestoneId); database.close(); return result.changes > 0; } diff --git a/database/completeWorkOrderMilestone.ts b/database/completeWorkOrderMilestone.ts index 174b9fd2..a0eedf8b 100644 --- a/database/completeWorkOrderMilestone.ts +++ b/database/completeWorkOrderMilestone.ts @@ -1,4 +1,6 @@ import { + type DateString, + type TimeString, dateStringToInteger, dateToInteger, dateToTimeInteger, @@ -10,9 +12,9 @@ import { sunriseDB } from '../helpers/database.helpers.js' export interface CompleteWorkOrderMilestoneForm { workOrderMilestoneId: number | string - - workOrderMilestoneCompletionDateString?: string - workOrderMilestoneCompletionTimeString?: string + + workOrderMilestoneCompletionDateString?: '' | DateString + workOrderMilestoneCompletionTimeString?: '' | TimeString } export default function completeWorkOrderMilestone( @@ -23,6 +25,20 @@ export default function completeWorkOrderMilestone( const database = sqlite(sunriseDB) + const completionDate = + (milestoneForm.workOrderMilestoneCompletionDateString ?? '') === '' + ? dateToInteger(rightNow) + : dateStringToInteger( + milestoneForm.workOrderMilestoneCompletionDateString as DateString + ) + + const completionTime = + (milestoneForm.workOrderMilestoneCompletionTimeString ?? '') === '' + ? dateToTimeInteger(rightNow) + : timeStringToInteger( + milestoneForm.workOrderMilestoneCompletionTimeString as TimeString + ) + const result = database .prepare( `update WorkOrderMilestones @@ -33,16 +49,8 @@ export default function completeWorkOrderMilestone( where workOrderMilestoneId = ?` ) .run( - (milestoneForm.workOrderMilestoneCompletionDateString ?? '') === '' - ? dateToInteger(rightNow) - : dateStringToInteger( - milestoneForm.workOrderMilestoneCompletionDateString! - ), - (milestoneForm.workOrderMilestoneCompletionTimeString ?? '') === '' - ? dateToTimeInteger(rightNow) - : timeStringToInteger( - milestoneForm.workOrderMilestoneCompletionTimeString! - ), + completionDate, + completionTime, user.userName, rightNow.getTime(), milestoneForm.workOrderMilestoneId diff --git a/database/deleteRecord.js b/database/deleteRecord.js index 2aef1f10..8ab16d05 100644 --- a/database/deleteRecord.js +++ b/database/deleteRecord.js @@ -1,6 +1,6 @@ import sqlite from 'better-sqlite3'; import { sunriseDB } from '../helpers/database.helpers.js'; -import { clearCacheByTableName } from '../helpers/functions.cache.js'; +import { cacheTableNames, clearCacheByTableName } from '../helpers/functions.cache.js'; const recordIdColumns = new Map([ ['BurialSiteComments', 'burialSiteCommentId'], ['BurialSiteStatuses', 'burialSiteStatusId'], @@ -55,6 +55,9 @@ export function deleteRecord(recordTable, recordId, user) { .run(user.userName, rightNowMillis, recordId); } database.close(); - clearCacheByTableName(recordTable); + // Clear cache for tables that are cached + if (cacheTableNames.includes(recordTable)) { + clearCacheByTableName(recordTable); + } return result.changes > 0; } diff --git a/database/deleteRecord.ts b/database/deleteRecord.ts index efe0df8d..9ca44006 100644 --- a/database/deleteRecord.ts +++ b/database/deleteRecord.ts @@ -1,7 +1,11 @@ import sqlite from 'better-sqlite3' import { sunriseDB } from '../helpers/database.helpers.js' -import { clearCacheByTableName } from '../helpers/functions.cache.js' +import { + CacheTableNames, + cacheTableNames, + clearCacheByTableName +} from '../helpers/functions.cache.js' type RecordTable = | 'BurialSiteComments' @@ -73,7 +77,7 @@ export function deleteRecord( `update ${recordTable} set recordDelete_userName = ?, recordDelete_timeMillis = ? - where ${recordIdColumns.get(recordTable)!} = ? + where ${recordIdColumns.get(recordTable)} = ? and recordDelete_timeMillis is null` ) .run(user.userName, rightNowMillis, recordId) @@ -84,7 +88,7 @@ export function deleteRecord( `update ${relatedTable} set recordDelete_userName = ?, recordDelete_timeMillis = ? - where ${recordIdColumns.get(recordTable)!} = ? + where ${recordIdColumns.get(recordTable)} = ? and recordDelete_timeMillis is null` ) .run(user.userName, rightNowMillis, recordId) @@ -92,7 +96,10 @@ export function deleteRecord( database.close() - clearCacheByTableName(recordTable) + // Clear cache for tables that are cached + if (cacheTableNames.includes(recordTable as CacheTableNames)) { + clearCacheByTableName(recordTable as CacheTableNames) + } return result.changes > 0 } diff --git a/database/updateRecord.js b/database/updateRecord.js index d9c14e07..a848db8b 100644 --- a/database/updateRecord.js +++ b/database/updateRecord.js @@ -13,13 +13,17 @@ const recordNameIdColumns = new Map([ ]); export function updateRecord(recordTable, recordId, recordName, user) { const database = sqlite(sunriseDB); + const columnNames = recordNameIdColumns.get(recordTable); + if (columnNames === undefined) { + throw new Error(`Invalid record table: ${recordTable}`); + } const result = database .prepare(`update ${recordTable} - set ${recordNameIdColumns.get(recordTable)[0]} = ?, + set ${columnNames[0]} = ?, recordUpdate_userName = ?, recordUpdate_timeMillis = ? where recordDelete_timeMillis is null - and ${recordNameIdColumns.get(recordTable)[1]} = ?`) + and ${columnNames[1]} = ?`) .run(recordName, user.userName, Date.now(), recordId); database.close(); clearCacheByTableName(recordTable); diff --git a/database/updateRecord.ts b/database/updateRecord.ts index 68a07a1d..ac67017b 100644 --- a/database/updateRecord.ts +++ b/database/updateRecord.ts @@ -29,14 +29,20 @@ export function updateRecord( ): boolean { const database = sqlite(sunriseDB) + const columnNames = recordNameIdColumns.get(recordTable) + + if (columnNames === undefined) { + throw new Error(`Invalid record table: ${recordTable}`) + } + const result = database .prepare( `update ${recordTable} - set ${recordNameIdColumns.get(recordTable)![0]} = ?, + set ${columnNames[0]} = ?, recordUpdate_userName = ?, recordUpdate_timeMillis = ? where recordDelete_timeMillis is null - and ${recordNameIdColumns.get(recordTable)![1]} = ?` + and ${columnNames[1]} = ?` ) .run(recordName, user.userName, Date.now(), recordId) diff --git a/helpers/functions.cache.d.ts b/helpers/functions.cache.d.ts index 808f3e57..d580aa1f 100644 --- a/helpers/functions.cache.d.ts +++ b/helpers/functions.cache.d.ts @@ -20,7 +20,7 @@ export declare function getWorkOrderMilestoneTypeById(workOrderMilestoneTypeId: export declare function getWorkOrderMilestoneTypeByWorkOrderMilestoneType(workOrderMilestoneTypeString: string): WorkOrderMilestoneType | undefined; export declare function getWorkOrderMilestoneTypes(): WorkOrderMilestoneType[]; export declare function preloadCaches(): void; -type CacheTableNames = 'BurialSiteStatuses' | 'BurialSiteTypeFields' | 'BurialSiteTypes' | 'CommittalTypes' | 'ContractTypeFields' | 'ContractTypePrints' | 'ContractTypes' | 'FeeCategories' | 'Fees' | 'IntermentContainerTypes' | 'WorkOrderMilestoneTypes' | 'WorkOrderTypes'; +export declare const cacheTableNames: readonly ["BurialSiteStatuses", "BurialSiteTypeFields", "BurialSiteTypes", "CommittalTypes", "ContractTypeFields", "ContractTypePrints", "ContractTypes", "FeeCategories", "Fees", "IntermentContainerTypes", "WorkOrderMilestoneTypes", "WorkOrderTypes"]; +export type CacheTableNames = typeof cacheTableNames[number]; export declare function clearCacheByTableName(tableName: CacheTableNames, relayMessage?: boolean): void; export declare function clearCaches(): void; -export {}; diff --git a/helpers/functions.cache.js b/helpers/functions.cache.js index a621405e..f7a08c04 100644 --- a/helpers/functions.cache.js +++ b/helpers/functions.cache.js @@ -170,6 +170,20 @@ export function preloadCaches() { getWorkOrderTypes(); getWorkOrderMilestoneTypes(); } +export const cacheTableNames = [ + 'BurialSiteStatuses', + 'BurialSiteTypeFields', + 'BurialSiteTypes', + 'CommittalTypes', + 'ContractTypeFields', + 'ContractTypePrints', + 'ContractTypes', + 'FeeCategories', + 'Fees', + 'IntermentContainerTypes', + 'WorkOrderMilestoneTypes', + 'WorkOrderTypes' +]; export function clearCacheByTableName(tableName, relayMessage = true) { switch (tableName) { case 'BurialSiteStatuses': { diff --git a/helpers/functions.cache.ts b/helpers/functions.cache.ts index fd9cf352..0f869b24 100644 --- a/helpers/functions.cache.ts +++ b/helpers/functions.cache.ts @@ -305,19 +305,22 @@ export function preloadCaches(): void { getWorkOrderMilestoneTypes() } -type CacheTableNames = - | 'BurialSiteStatuses' - | 'BurialSiteTypeFields' - | 'BurialSiteTypes' - | 'CommittalTypes' - | 'ContractTypeFields' - | 'ContractTypePrints' - | 'ContractTypes' - | 'FeeCategories' - | 'Fees' - | 'IntermentContainerTypes' - | 'WorkOrderMilestoneTypes' - | 'WorkOrderTypes' +export const cacheTableNames = [ + 'BurialSiteStatuses' + , 'BurialSiteTypeFields' + , 'BurialSiteTypes' + , 'CommittalTypes' + , 'ContractTypeFields' + , 'ContractTypePrints' + , 'ContractTypes' + , 'FeeCategories' + , 'Fees' + , 'IntermentContainerTypes' + , 'WorkOrderMilestoneTypes' + , 'WorkOrderTypes' +] as const + +export type CacheTableNames = typeof cacheTableNames[number] export function clearCacheByTableName( tableName: CacheTableNames,