From 889ad4ab10a086707fe503629011daec27ec406a Mon Sep 17 00:00:00 2001 From: Dan Gowans Date: Tue, 28 Mar 2023 13:12:54 -0400 Subject: [PATCH] attempt to reduce complexity --- helpers/lotOccupancyDB/getLotOccupancies.js | 34 +++++------ helpers/lotOccupancyDB/getLotOccupancies.ts | 62 ++++++++++++--------- 2 files changed, 53 insertions(+), 43 deletions(-) diff --git a/helpers/lotOccupancyDB/getLotOccupancies.js b/helpers/lotOccupancyDB/getLotOccupancies.js index 383dc0bf..529909fa 100644 --- a/helpers/lotOccupancyDB/getLotOccupancies.js +++ b/helpers/lotOccupancyDB/getLotOccupancies.js @@ -36,8 +36,7 @@ function buildWhereClause(filters) { sqlParameters.push(dateStringToInteger(filters.occupancyStartDateString)); } if ((filters.occupancyEffectiveDateString ?? '') !== '') { - sqlWhereClause += - ` and ( + sqlWhereClause += ` and ( o.occupancyEndDate is null or (o.occupancyStartDate <= ? and o.occupancyEndDate >= ?) )`; @@ -66,6 +65,18 @@ function buildWhereClause(filters) { sqlParameters }; } +async function addInclusions(lotOccupancy, options, database) { + if (options.includeFees) { + lotOccupancy.lotOccupancyFees = await getLotOccupancyFees(lotOccupancy.lotOccupancyId, database); + } + if (options.includeTransactions) { + lotOccupancy.lotOccupancyTransactions = await getLotOccupancyTransactions(lotOccupancy.lotOccupancyId, database); + } + if (options.includeOccupants) { + lotOccupancy.lotOccupancyOccupants = await getLotOccupancyOccupants(lotOccupancy.lotOccupancyId, database); + } + return lotOccupancy; +} export async function getLotOccupancies(filters, options, connectedDatabase) { const database = connectedDatabase ?? (await acquireConnection()); database.function('userFn_dateIntegerToString', dateIntegerToString); @@ -74,10 +85,10 @@ export async function getLotOccupancies(filters, options, connectedDatabase) { const isLimited = options.limit !== -1; if (isLimited) { count = database - .prepare('select count(*) as recordCount' + - ' from LotOccupancies o' + - ' left join Lots l on o.lotId = l.lotId' + - sqlWhereClause) + .prepare(`select count(*) as recordCount + from LotOccupancies o + left join Lots l on o.lotId = l.lotId + ${sqlWhereClause}`) .get(sqlParameters).recordCount; } let lotOccupancies = []; @@ -108,16 +119,7 @@ export async function getLotOccupancies(filters, options, connectedDatabase) { ? configFunctions.getProperty('settings.lotOccupancy.prints')[0] : occupancyType.occupancyTypePrints[0]; } - if (options.includeFees) { - lotOccupancy.lotOccupancyFees = await getLotOccupancyFees(lotOccupancy.lotOccupancyId, database); - } - if (options.includeTransactions) { - lotOccupancy.lotOccupancyTransactions = - await getLotOccupancyTransactions(lotOccupancy.lotOccupancyId, database); - } - if (options.includeOccupants) { - lotOccupancy.lotOccupancyOccupants = await getLotOccupancyOccupants(lotOccupancy.lotOccupancyId, database); - } + await addInclusions(lotOccupancy, options, database); } } if (connectedDatabase === undefined) { diff --git a/helpers/lotOccupancyDB/getLotOccupancies.ts b/helpers/lotOccupancyDB/getLotOccupancies.ts index 7342adba..2a266bf2 100644 --- a/helpers/lotOccupancyDB/getLotOccupancies.ts +++ b/helpers/lotOccupancyDB/getLotOccupancies.ts @@ -97,8 +97,7 @@ function buildWhereClause(filters: GetLotOccupanciesFilters): { } if ((filters.occupancyEffectiveDateString ?? '') !== '') { - sqlWhereClause += - ` and ( + sqlWhereClause += ` and ( o.occupancyEndDate is null or (o.occupancyStartDate <= ? and o.occupancyEndDate >= ?) )` @@ -136,6 +135,35 @@ function buildWhereClause(filters: GetLotOccupanciesFilters): { } } +async function addInclusions( + lotOccupancy: recordTypes.LotOccupancy, + options: GetLotOccupanciesOptions, + database: PoolConnection +): Promise { + if (options.includeFees) { + lotOccupancy.lotOccupancyFees = await getLotOccupancyFees( + lotOccupancy.lotOccupancyId!, + database + ) + } + + if (options.includeTransactions) { + lotOccupancy.lotOccupancyTransactions = await getLotOccupancyTransactions( + lotOccupancy.lotOccupancyId!, + database + ) + } + + if (options.includeOccupants) { + lotOccupancy.lotOccupancyOccupants = await getLotOccupancyOccupants( + lotOccupancy.lotOccupancyId!, + database + ) + } + + return lotOccupancy +} + export async function getLotOccupancies( filters: GetLotOccupanciesFilters, options: GetLotOccupanciesOptions, @@ -154,10 +182,10 @@ export async function getLotOccupancies( if (isLimited) { count = database .prepare( - 'select count(*) as recordCount' + - ' from LotOccupancies o' + - ' left join Lots l on o.lotId = l.lotId' + - sqlWhereClause + `select count(*) as recordCount + from LotOccupancies o + left join Lots l on o.lotId = l.lotId + ${sqlWhereClause}` ) .get(sqlParameters).recordCount } @@ -201,27 +229,7 @@ export async function getLotOccupancies( : occupancyType.occupancyTypePrints![0] } - if (options.includeFees) { - lotOccupancy.lotOccupancyFees = await getLotOccupancyFees( - lotOccupancy.lotOccupancyId!, - database - ) - } - - if (options.includeTransactions) { - lotOccupancy.lotOccupancyTransactions = - await getLotOccupancyTransactions( - lotOccupancy.lotOccupancyId!, - database - ) - } - - if (options.includeOccupants) { - lotOccupancy.lotOccupancyOccupants = await getLotOccupancyOccupants( - lotOccupancy.lotOccupancyId!, - database - ) - } + await addInclusions(lotOccupancy, options, database) } }