From a9c504ea217da244a21dbf1156088cee1f4eeaf1 Mon Sep 17 00:00:00 2001 From: Dan Gowans Date: Thu, 8 Sep 2022 14:52:32 -0400 Subject: [PATCH] work order milestone type cache --- helpers/functions.cache.d.ts | 3 ++ helpers/functions.cache.js | 19 +++++++++ helpers/functions.cache.ts | 33 +++++++++++++++ .../getWorkOrderMilestoneTypes.d.ts | 3 ++ .../getWorkOrderMilestoneTypes.js | 26 ++++++++++++ .../getWorkOrderMilestoneTypes.ts | 42 +++++++++++++++++++ 6 files changed, 126 insertions(+) create mode 100644 helpers/lotOccupancyDB/getWorkOrderMilestoneTypes.d.ts create mode 100644 helpers/lotOccupancyDB/getWorkOrderMilestoneTypes.js create mode 100644 helpers/lotOccupancyDB/getWorkOrderMilestoneTypes.ts diff --git a/helpers/functions.cache.d.ts b/helpers/functions.cache.d.ts index f51f02a4..35c30a32 100644 --- a/helpers/functions.cache.d.ts +++ b/helpers/functions.cache.d.ts @@ -17,3 +17,6 @@ export declare function getOccupancyTypeByOccupancyType(occupancyTypeString: str export declare function clearOccupancyTypesCache(): void; export declare function getWorkOrderTypes(): recordTypes.WorkOrderType[]; export declare function clearWorkOrderTypesCache(): void; +export declare function getWorkOrderMilestoneTypes(): recordTypes.WorkOrderMilestoneType[]; +export declare function getWorkOrderMilestoneTypeByWorkOrderMilestoneType(workOrderMilestoneTypeString: string): recordTypes.WorkOrderMilestoneType; +export declare function clearWorkOrderMilestoneTypesCache(): void; diff --git a/helpers/functions.cache.js b/helpers/functions.cache.js index 65e59950..740e68d2 100644 --- a/helpers/functions.cache.js +++ b/helpers/functions.cache.js @@ -3,6 +3,7 @@ import { getLotStatuses as getLotStatusesFromDatabase } from "./lotOccupancyDB/g import { getLotTypes as getLotTypesFromDatabase } from "./lotOccupancyDB/getLotTypes.js"; import { getOccupancyTypes as getOccupancyTypesFromDatabase } from "./lotOccupancyDB/getOccupancyTypes.js"; import { getWorkOrderTypes as getWorkOrderTypesFromDatabase } from "./lotOccupancyDB/getWorkOrderTypes.js"; +import { getWorkOrderMilestoneTypes as getWorkOrderMilestoneTypesFromDatabase } from "./lotOccupancyDB/getWorkOrderMilestoneTypes.js"; let lotOccupantTypes; export function getLotOccupantTypes() { if (!lotOccupantTypes) { @@ -107,3 +108,21 @@ export function getWorkOrderTypes() { export function clearWorkOrderTypesCache() { workOrderTypes = undefined; } +let workOrderMilestoneTypes; +export function getWorkOrderMilestoneTypes() { + if (!workOrderMilestoneTypes) { + workOrderMilestoneTypes = getWorkOrderMilestoneTypesFromDatabase(); + } + return workOrderMilestoneTypes; +} +export function getWorkOrderMilestoneTypeByWorkOrderMilestoneType(workOrderMilestoneTypeString) { + const cachedWorkOrderMilestoneTypes = getWorkOrderMilestoneTypes(); + const workOrderMilestoneTypeLowerCase = workOrderMilestoneTypeString.toLowerCase(); + return cachedWorkOrderMilestoneTypes.find((currentWorkOrderMilestoneType) => { + return (currentWorkOrderMilestoneType.workOrderMilestoneType.toLowerCase() === + workOrderMilestoneTypeLowerCase); + }); +} +export function clearWorkOrderMilestoneTypesCache() { + workOrderMilestoneTypes = undefined; +} diff --git a/helpers/functions.cache.ts b/helpers/functions.cache.ts index dab10ed2..9d3f2960 100644 --- a/helpers/functions.cache.ts +++ b/helpers/functions.cache.ts @@ -8,6 +8,8 @@ import { getOccupancyTypes as getOccupancyTypesFromDatabase } from "./lotOccupan import { getWorkOrderTypes as getWorkOrderTypesFromDatabase } from "./lotOccupancyDB/getWorkOrderTypes.js"; +import { getWorkOrderMilestoneTypes as getWorkOrderMilestoneTypesFromDatabase } from "./lotOccupancyDB/getWorkOrderMilestoneTypes.js"; + import type * as recordTypes from "../types/recordTypes"; /* @@ -177,3 +179,34 @@ export function getWorkOrderTypes() { export function clearWorkOrderTypesCache() { workOrderTypes = undefined; } + +/* + * Work Order Milestone Types + */ + +let workOrderMilestoneTypes: recordTypes.WorkOrderMilestoneType[]; + +export function getWorkOrderMilestoneTypes() { + if (!workOrderMilestoneTypes) { + workOrderMilestoneTypes = getWorkOrderMilestoneTypesFromDatabase(); + } + + return workOrderMilestoneTypes; +} + +export function getWorkOrderMilestoneTypeByWorkOrderMilestoneType(workOrderMilestoneTypeString: string) { + const cachedWorkOrderMilestoneTypes = getWorkOrderMilestoneTypes(); + + const workOrderMilestoneTypeLowerCase = workOrderMilestoneTypeString.toLowerCase(); + + return cachedWorkOrderMilestoneTypes.find((currentWorkOrderMilestoneType) => { + return ( + currentWorkOrderMilestoneType.workOrderMilestoneType.toLowerCase() === + workOrderMilestoneTypeLowerCase + ); + }); +} + +export function clearWorkOrderMilestoneTypesCache() { + workOrderMilestoneTypes = undefined; +} diff --git a/helpers/lotOccupancyDB/getWorkOrderMilestoneTypes.d.ts b/helpers/lotOccupancyDB/getWorkOrderMilestoneTypes.d.ts new file mode 100644 index 00000000..a2f64995 --- /dev/null +++ b/helpers/lotOccupancyDB/getWorkOrderMilestoneTypes.d.ts @@ -0,0 +1,3 @@ +import type * as recordTypes from "../../types/recordTypes"; +export declare const getWorkOrderMilestoneTypes: () => recordTypes.WorkOrderMilestoneType[]; +export default getWorkOrderMilestoneTypes; diff --git a/helpers/lotOccupancyDB/getWorkOrderMilestoneTypes.js b/helpers/lotOccupancyDB/getWorkOrderMilestoneTypes.js new file mode 100644 index 00000000..7db9dc5d --- /dev/null +++ b/helpers/lotOccupancyDB/getWorkOrderMilestoneTypes.js @@ -0,0 +1,26 @@ +import sqlite from "better-sqlite3"; +import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +export const getWorkOrderMilestoneTypes = () => { + const database = sqlite(databasePath); + const workOrderMilestoneTypes = database + .prepare("select workOrderMilestoneTypeId, workOrderMilestoneType, orderNumber" + + " from WorkOrderMilestoneTypes" + + " where recordDelete_timeMillis is null" + + " order by orderNumber, workOrderMilestoneType") + .all(); + let expectedOrderNumber = 0; + for (const workOrderMilestoneType of workOrderMilestoneTypes) { + if (workOrderMilestoneType.orderNumber !== expectedOrderNumber) { + database + .prepare("update WorkOrdeMilestoneTypes" + + " set orderNumber = ?" + + " where workOrderMilestoneTypeId = ?") + .run(expectedOrderNumber, workOrderMilestoneType.workOrderMilestoneTypeId); + workOrderMilestoneType.orderNumber = expectedOrderNumber; + } + expectedOrderNumber += 1; + } + database.close(); + return workOrderMilestoneTypes; +}; +export default getWorkOrderMilestoneTypes; diff --git a/helpers/lotOccupancyDB/getWorkOrderMilestoneTypes.ts b/helpers/lotOccupancyDB/getWorkOrderMilestoneTypes.ts new file mode 100644 index 00000000..f58faa1b --- /dev/null +++ b/helpers/lotOccupancyDB/getWorkOrderMilestoneTypes.ts @@ -0,0 +1,42 @@ +import sqlite from "better-sqlite3"; + +import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; + +import type * as recordTypes from "../../types/recordTypes"; + +export const getWorkOrderMilestoneTypes = (): recordTypes.WorkOrderMilestoneType[] => { + const database = sqlite(databasePath); + + const workOrderMilestoneTypes: recordTypes.WorkOrderMilestoneType[] = database + .prepare( + "select workOrderMilestoneTypeId, workOrderMilestoneType, orderNumber" + + " from WorkOrderMilestoneTypes" + + " where recordDelete_timeMillis is null" + + " order by orderNumber, workOrderMilestoneType" + ) + .all(); + + let expectedOrderNumber = 0; + + for (const workOrderMilestoneType of workOrderMilestoneTypes) { + if (workOrderMilestoneType.orderNumber !== expectedOrderNumber) { + database + .prepare( + "update WorkOrdeMilestoneTypes" + + " set orderNumber = ?" + + " where workOrderMilestoneTypeId = ?" + ) + .run(expectedOrderNumber, workOrderMilestoneType.workOrderMilestoneTypeId); + + workOrderMilestoneType.orderNumber = expectedOrderNumber; + } + + expectedOrderNumber += 1; + } + + database.close(); + + return workOrderMilestoneTypes; +}; + +export default getWorkOrderMilestoneTypes;