reduce duplicate filters

deepsource-autofix-76c6eb20
Dan Gowans 2022-12-28 15:03:13 -05:00
parent d6229dd5de
commit 586450d6f8
2 changed files with 36 additions and 32 deletions

View File

@ -5,6 +5,7 @@ import { getWorkOrderComments } from "./getWorkOrderComments.js";
import { getLots } from "./getLots.js"; import { getLots } from "./getLots.js";
import { getLotOccupancies } from "./getLotOccupancies.js"; import { getLotOccupancies } from "./getLotOccupancies.js";
import { getWorkOrderMilestones } from "./getWorkOrderMilestones.js"; import { getWorkOrderMilestones } from "./getWorkOrderMilestones.js";
import { getLotNameWhereClause, getOccupantNameWhereClause } from "../functions.sqlFilters.js";
const buildWhereClause = (filters) => { const buildWhereClause = (filters) => {
let sqlWhereClause = " where w.recordDelete_timeMillis is null"; let sqlWhereClause = " where w.recordDelete_timeMillis is null";
const sqlParameters = []; const sqlParameters = [];
@ -24,23 +25,24 @@ const buildWhereClause = (filters) => {
sqlWhereClause += " and w.workOrderOpenDate = ?"; sqlWhereClause += " and w.workOrderOpenDate = ?";
sqlParameters.push(dateStringToInteger(filters.workOrderOpenDateString)); sqlParameters.push(dateStringToInteger(filters.workOrderOpenDateString));
} }
if (filters.occupantName) { const occupantNameFilters = getOccupantNameWhereClause(filters.occupantName, "o");
const occupantNamePieces = filters.occupantName.toLowerCase().split(" "); if (occupantNameFilters.sqlParameters.length > 0) {
for (const occupantNamePiece of occupantNamePieces) { sqlWhereClause +=
sqlWhereClause += " and w.workOrderId in (" +
" and w.workOrderId in (" + "select workOrderId from WorkOrderLotOccupancies o" +
"select workOrderId from WorkOrderLotOccupancies where recordDelete_timeMillis is null and lotOccupancyId in (select lotOccupancyId from LotOccupancyOccupants where recordDelete_timeMillis is null and instr(lower(occupantName), ?)))"; " where recordDelete_timeMillis is null" +
sqlParameters.push(occupantNamePiece); occupantNameFilters.sqlWhereClause +
} ")";
sqlParameters.push(...occupantNameFilters.sqlParameters);
} }
if (filters.lotName) { const lotNameFilters = getLotNameWhereClause(filters.lotName, "", "l");
const lotNamePieces = filters.lotName.toLowerCase().split(" "); if (lotNameFilters.sqlParameters.length > 0) {
for (const lotNamePiece of lotNamePieces) { sqlWhereClause +=
sqlWhereClause += " and w.workOrderId in (" +
" and w.workOrderId in (" + "select workOrderId from WorkOrderLots where recordDelete_timeMillis is null and lotId in (select lotId from Lots l where recordDelete_timeMillis is null" +
"select workOrderId from WorkOrderLots where recordDelete_timeMillis is null and lotId in (select lotId from Lots where recordDelete_timeMillis is null and instr(lower(lotName), ?)))"; lotNameFilters.sqlWhereClause +
sqlParameters.push(lotNamePiece); "))";
} sqlParameters.push(...lotNameFilters.sqlParameters);
} }
if (filters.lotOccupancyId) { if (filters.lotOccupancyId) {
sqlWhereClause += sqlWhereClause +=

View File

@ -13,6 +13,7 @@ import { getLotOccupancies } from "./getLotOccupancies.js";
import { getWorkOrderMilestones } from "./getWorkOrderMilestones.js"; import { getWorkOrderMilestones } from "./getWorkOrderMilestones.js";
import type * as recordTypes from "../../types/recordTypes"; import type * as recordTypes from "../../types/recordTypes";
import { getLotNameWhereClause, getOccupantNameWhereClause } from "../functions.sqlFilters.js";
interface GetWorkOrdersFilters { interface GetWorkOrdersFilters {
workOrderTypeId?: number | string; workOrderTypeId?: number | string;
@ -55,24 +56,25 @@ const buildWhereClause = (
sqlParameters.push(dateStringToInteger(filters.workOrderOpenDateString)); sqlParameters.push(dateStringToInteger(filters.workOrderOpenDateString));
} }
if (filters.occupantName) { const occupantNameFilters = getOccupantNameWhereClause(filters.occupantName, "o");
const occupantNamePieces = filters.occupantName.toLowerCase().split(" "); if (occupantNameFilters.sqlParameters.length > 0) {
for (const occupantNamePiece of occupantNamePieces) { sqlWhereClause +=
sqlWhereClause += " and w.workOrderId in (" +
" and w.workOrderId in (" + "select workOrderId from WorkOrderLotOccupancies o" +
"select workOrderId from WorkOrderLotOccupancies where recordDelete_timeMillis is null and lotOccupancyId in (select lotOccupancyId from LotOccupancyOccupants where recordDelete_timeMillis is null and instr(lower(occupantName), ?)))"; " where recordDelete_timeMillis is null" +
sqlParameters.push(occupantNamePiece); occupantNameFilters.sqlWhereClause +
} ")";
sqlParameters.push(...occupantNameFilters.sqlParameters);
} }
if (filters.lotName) { const lotNameFilters = getLotNameWhereClause(filters.lotName, "", "l");
const lotNamePieces = filters.lotName.toLowerCase().split(" "); if (lotNameFilters.sqlParameters.length > 0) {
for (const lotNamePiece of lotNamePieces) { sqlWhereClause +=
sqlWhereClause += " and w.workOrderId in (" +
" and w.workOrderId in (" + "select workOrderId from WorkOrderLots where recordDelete_timeMillis is null and lotId in (select lotId from Lots l where recordDelete_timeMillis is null" +
"select workOrderId from WorkOrderLots where recordDelete_timeMillis is null and lotId in (select lotId from Lots where recordDelete_timeMillis is null and instr(lower(lotName), ?)))"; lotNameFilters.sqlWhereClause +
sqlParameters.push(lotNamePiece); "))";
} sqlParameters.push(...lotNameFilters.sqlParameters);
} }
if (filters.lotOccupancyId) { if (filters.lotOccupancyId) {