From 27b6fe2706aaacdf3049f25a0fc5bd01610e61ae Mon Sep 17 00:00:00 2001 From: Dan Gowans Date: Wed, 4 Jan 2023 15:43:14 -0500 Subject: [PATCH] reduce ordernumber queries --- helpers/functions.cache.d.ts | 1 + helpers/functions.cache.js | 6 +++ helpers/functions.cache.ts | 10 +++++ .../moveWorkOrderMilestoneTypeDown.js | 14 +++---- .../moveWorkOrderMilestoneTypeDown.ts | 29 +++++++------ .../moveWorkOrderMilestoneTypeUp.js | 23 +++++----- .../moveWorkOrderMilestoneTypeUp.ts | 42 ++++++++++--------- 7 files changed, 73 insertions(+), 52 deletions(-) diff --git a/helpers/functions.cache.d.ts b/helpers/functions.cache.d.ts index 89d535bd..78eda851 100644 --- a/helpers/functions.cache.d.ts +++ b/helpers/functions.cache.d.ts @@ -21,5 +21,6 @@ export declare function getWorkOrderTypes(): recordTypes.WorkOrderType[]; export declare function getWorkOrderTypeById(workOrderTypeId: number): recordTypes.WorkOrderType; export declare function clearWorkOrderTypesCache(): void; export declare function getWorkOrderMilestoneTypes(): recordTypes.WorkOrderMilestoneType[]; +export declare function getWorkOrderMilestoneTypeByWorkOrderMilestoneTypeId(workOrderMilestoneTypeId: number): 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 b14dcbef..95965e37 100644 --- a/helpers/functions.cache.js +++ b/helpers/functions.cache.js @@ -139,6 +139,12 @@ export function getWorkOrderMilestoneTypes() { } return workOrderMilestoneTypes; } +export function getWorkOrderMilestoneTypeByWorkOrderMilestoneTypeId(workOrderMilestoneTypeId) { + const cachedWorkOrderMilestoneTypes = getWorkOrderMilestoneTypes(); + return cachedWorkOrderMilestoneTypes.find((currentWorkOrderMilestoneType) => { + return currentWorkOrderMilestoneType.workOrderMilestoneTypeId === workOrderMilestoneTypeId; + }); +} export function getWorkOrderMilestoneTypeByWorkOrderMilestoneType(workOrderMilestoneTypeString) { const cachedWorkOrderMilestoneTypes = getWorkOrderMilestoneTypes(); const workOrderMilestoneTypeLowerCase = workOrderMilestoneTypeString.toLowerCase(); diff --git a/helpers/functions.cache.ts b/helpers/functions.cache.ts index c1893da6..49987b34 100644 --- a/helpers/functions.cache.ts +++ b/helpers/functions.cache.ts @@ -222,6 +222,16 @@ export function getWorkOrderMilestoneTypes() { return workOrderMilestoneTypes; } +export function getWorkOrderMilestoneTypeByWorkOrderMilestoneTypeId( + workOrderMilestoneTypeId: number +) { + const cachedWorkOrderMilestoneTypes = getWorkOrderMilestoneTypes(); + + return cachedWorkOrderMilestoneTypes.find((currentWorkOrderMilestoneType) => { + return currentWorkOrderMilestoneType.workOrderMilestoneTypeId === workOrderMilestoneTypeId; + }); +} + export function getWorkOrderMilestoneTypeByWorkOrderMilestoneType( workOrderMilestoneTypeString: string ) { diff --git a/helpers/lotOccupancyDB/moveWorkOrderMilestoneTypeDown.js b/helpers/lotOccupancyDB/moveWorkOrderMilestoneTypeDown.js index fc353bd9..0e8d2fc7 100644 --- a/helpers/lotOccupancyDB/moveWorkOrderMilestoneTypeDown.js +++ b/helpers/lotOccupancyDB/moveWorkOrderMilestoneTypeDown.js @@ -1,11 +1,11 @@ import sqlite from "better-sqlite3"; import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; -import { clearWorkOrderMilestoneTypesCache } from "../functions.cache.js"; +import { getWorkOrderMilestoneTypeByWorkOrderMilestoneTypeId, clearWorkOrderMilestoneTypesCache } from "../functions.cache.js"; export function moveWorkOrderMilestoneTypeDown(workOrderMilestoneTypeId) { + const currentOrderNumber = getWorkOrderMilestoneTypeByWorkOrderMilestoneTypeId(typeof workOrderMilestoneTypeId === "string" + ? Number.parseInt(workOrderMilestoneTypeId) + : workOrderMilestoneTypeId).orderNumber; const database = sqlite(databasePath); - const currentOrderNumber = database - .prepare(`select orderNumber from WorkOrderMilestoneTypes where workOrderMilestoneTypeId = ?`) - .get(workOrderMilestoneTypeId).orderNumber; database .prepare(`update WorkOrderMilestoneTypes set orderNumber = orderNumber - 1 @@ -22,10 +22,10 @@ export function moveWorkOrderMilestoneTypeDown(workOrderMilestoneTypeId) { return result.changes > 0; } export function moveWorkOrderMilestoneTypeDownToBottom(workOrderMilestoneTypeId) { + const currentOrderNumber = getWorkOrderMilestoneTypeByWorkOrderMilestoneTypeId(typeof workOrderMilestoneTypeId === "string" + ? Number.parseInt(workOrderMilestoneTypeId) + : workOrderMilestoneTypeId).orderNumber; const database = sqlite(databasePath); - const currentOrderNumber = database - .prepare("select orderNumber from WorkOrderMilestoneTypes where workOrderMilestoneTypeId = ?") - .get(workOrderMilestoneTypeId).orderNumber; const maxOrderNumber = database .prepare(`select max(orderNumber) as maxOrderNumber from WorkOrderMilestoneTypes diff --git a/helpers/lotOccupancyDB/moveWorkOrderMilestoneTypeDown.ts b/helpers/lotOccupancyDB/moveWorkOrderMilestoneTypeDown.ts index c5584994..fcdc39e6 100644 --- a/helpers/lotOccupancyDB/moveWorkOrderMilestoneTypeDown.ts +++ b/helpers/lotOccupancyDB/moveWorkOrderMilestoneTypeDown.ts @@ -2,16 +2,19 @@ import sqlite from "better-sqlite3"; import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; -import { clearWorkOrderMilestoneTypesCache } from "../functions.cache.js"; +import { + getWorkOrderMilestoneTypeByWorkOrderMilestoneTypeId, + clearWorkOrderMilestoneTypesCache +} from "../functions.cache.js"; export function moveWorkOrderMilestoneTypeDown(workOrderMilestoneTypeId: number | string): boolean { - const database = sqlite(databasePath); + const currentOrderNumber: number = getWorkOrderMilestoneTypeByWorkOrderMilestoneTypeId( + typeof workOrderMilestoneTypeId === "string" + ? Number.parseInt(workOrderMilestoneTypeId) + : workOrderMilestoneTypeId + ).orderNumber; - const currentOrderNumber: number = database - .prepare( - `select orderNumber from WorkOrderMilestoneTypes where workOrderMilestoneTypeId = ?` - ) - .get(workOrderMilestoneTypeId).orderNumber; + const database = sqlite(databasePath); database .prepare( @@ -40,13 +43,13 @@ export function moveWorkOrderMilestoneTypeDown(workOrderMilestoneTypeId: number export function moveWorkOrderMilestoneTypeDownToBottom( workOrderMilestoneTypeId: number | string ): boolean { - const database = sqlite(databasePath); + const currentOrderNumber: number = getWorkOrderMilestoneTypeByWorkOrderMilestoneTypeId( + typeof workOrderMilestoneTypeId === "string" + ? Number.parseInt(workOrderMilestoneTypeId) + : workOrderMilestoneTypeId + ).orderNumber; - const currentOrderNumber: number = database - .prepare( - "select orderNumber from WorkOrderMilestoneTypes where workOrderMilestoneTypeId = ?" - ) - .get(workOrderMilestoneTypeId).orderNumber; + const database = sqlite(databasePath); const maxOrderNumber: number = database .prepare( diff --git a/helpers/lotOccupancyDB/moveWorkOrderMilestoneTypeUp.js b/helpers/lotOccupancyDB/moveWorkOrderMilestoneTypeUp.js index f448f267..9f354efc 100644 --- a/helpers/lotOccupancyDB/moveWorkOrderMilestoneTypeUp.js +++ b/helpers/lotOccupancyDB/moveWorkOrderMilestoneTypeUp.js @@ -1,15 +1,14 @@ import sqlite from "better-sqlite3"; import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; -import { clearWorkOrderMilestoneTypesCache } from "../functions.cache.js"; +import { getWorkOrderMilestoneTypeByWorkOrderMilestoneTypeId, clearWorkOrderMilestoneTypesCache } from "../functions.cache.js"; export function moveWorkOrderMilestoneTypeUp(workOrderMilestoneTypeId) { - const database = sqlite(databasePath); - const currentOrderNumber = database - .prepare(`select orderNumber from WorkOrderMilestoneTypes where workOrderMilestoneTypeId = ?`) - .get(workOrderMilestoneTypeId).orderNumber; + const currentOrderNumber = getWorkOrderMilestoneTypeByWorkOrderMilestoneTypeId(typeof workOrderMilestoneTypeId === "string" + ? Number.parseInt(workOrderMilestoneTypeId) + : workOrderMilestoneTypeId).orderNumber; if (currentOrderNumber <= 0) { - database.close(); return true; } + const database = sqlite(databasePath); database .prepare(`update WorkOrderMilestoneTypes set orderNumber = orderNumber + 1 @@ -26,11 +25,11 @@ export function moveWorkOrderMilestoneTypeUp(workOrderMilestoneTypeId) { return result.changes > 0; } export function moveWorkOrderMilestoneTypeUpToTop(workOrderMilestoneTypeId) { - const database = sqlite(databasePath); - const currentOrderNumber = database - .prepare("select orderNumber from WorkOrderMilestoneTypes where workOrderMilestoneTypeId = ?") - .get(workOrderMilestoneTypeId).orderNumber; + const currentOrderNumber = getWorkOrderMilestoneTypeByWorkOrderMilestoneTypeId(typeof workOrderMilestoneTypeId === "string" + ? Number.parseInt(workOrderMilestoneTypeId) + : workOrderMilestoneTypeId).orderNumber; if (currentOrderNumber > 0) { + const database = sqlite(databasePath); database .prepare("update WorkOrderMilestoneTypes set orderNumber = -1 where workOrderMilestoneTypeId = ?") .run(workOrderMilestoneTypeId); @@ -40,9 +39,9 @@ export function moveWorkOrderMilestoneTypeUpToTop(workOrderMilestoneTypeId) { where recordDelete_timeMillis is null and orderNumber < ?`) .run(currentOrderNumber); + database.close(); + clearWorkOrderMilestoneTypesCache(); } - database.close(); - clearWorkOrderMilestoneTypesCache(); return true; } export default moveWorkOrderMilestoneTypeUp; diff --git a/helpers/lotOccupancyDB/moveWorkOrderMilestoneTypeUp.ts b/helpers/lotOccupancyDB/moveWorkOrderMilestoneTypeUp.ts index 95e528a8..7bc8c577 100644 --- a/helpers/lotOccupancyDB/moveWorkOrderMilestoneTypeUp.ts +++ b/helpers/lotOccupancyDB/moveWorkOrderMilestoneTypeUp.ts @@ -2,22 +2,24 @@ import sqlite from "better-sqlite3"; import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; -import { clearWorkOrderMilestoneTypesCache } from "../functions.cache.js"; +import { + getWorkOrderMilestoneTypeByWorkOrderMilestoneTypeId, + clearWorkOrderMilestoneTypesCache +} from "../functions.cache.js"; export function moveWorkOrderMilestoneTypeUp(workOrderMilestoneTypeId: number | string): boolean { - const database = sqlite(databasePath); - - const currentOrderNumber: number = database - .prepare( - `select orderNumber from WorkOrderMilestoneTypes where workOrderMilestoneTypeId = ?` - ) - .get(workOrderMilestoneTypeId).orderNumber; + const currentOrderNumber: number = getWorkOrderMilestoneTypeByWorkOrderMilestoneTypeId( + typeof workOrderMilestoneTypeId === "string" + ? Number.parseInt(workOrderMilestoneTypeId) + : workOrderMilestoneTypeId + ).orderNumber; if (currentOrderNumber <= 0) { - database.close(); return true; } + const database = sqlite(databasePath); + database .prepare( `update WorkOrderMilestoneTypes @@ -45,15 +47,15 @@ export function moveWorkOrderMilestoneTypeUp(workOrderMilestoneTypeId: number | export function moveWorkOrderMilestoneTypeUpToTop( workOrderMilestoneTypeId: number | string ): boolean { - const database = sqlite(databasePath); - - const currentOrderNumber: number = database - .prepare( - "select orderNumber from WorkOrderMilestoneTypes where workOrderMilestoneTypeId = ?" - ) - .get(workOrderMilestoneTypeId).orderNumber; + const currentOrderNumber: number = getWorkOrderMilestoneTypeByWorkOrderMilestoneTypeId( + typeof workOrderMilestoneTypeId === "string" + ? Number.parseInt(workOrderMilestoneTypeId) + : workOrderMilestoneTypeId + ).orderNumber; if (currentOrderNumber > 0) { + const database = sqlite(databasePath); + database .prepare( "update WorkOrderMilestoneTypes set orderNumber = -1 where workOrderMilestoneTypeId = ?" @@ -68,12 +70,12 @@ export function moveWorkOrderMilestoneTypeUpToTop( and orderNumber < ?` ) .run(currentOrderNumber); + + database.close(); + + clearWorkOrderMilestoneTypesCache(); } - database.close(); - - clearWorkOrderMilestoneTypesCache(); - return true; }