track used search terms to reduce slow downs

deepsource-autofix-76c6eb20
Dan Gowans 2023-02-22 14:32:12 -05:00
parent 816ea77749
commit 9fa374d8c5
2 changed files with 29 additions and 22 deletions

View File

@ -15,13 +15,14 @@ export function getLotNameWhereClause(lotName = '', lotNameSearchType, lotsTable
break; break;
} }
default: { default: {
const usedPieces = new Set();
const lotNamePieces = lotName.toLowerCase().split(' '); const lotNamePieces = lotName.toLowerCase().split(' ');
for (const lotNamePiece of lotNamePieces) { for (const lotNamePiece of lotNamePieces) {
if (lotNamePiece === '') { if (lotNamePiece === '' || usedPieces.has(lotNamePiece)) {
continue; continue;
} }
sqlWhereClause += usedPieces.add(lotNamePiece);
' and instr(lower(' + lotsTableAlias + '.lotName), ?)'; sqlWhereClause += ` and instr(lower(${lotsTableAlias}.lotName), ?)`;
sqlParameters.push(lotNamePiece); sqlParameters.push(lotNamePiece);
} }
} }
@ -70,16 +71,16 @@ export function getOccupancyTimeWhereClause(occupancyTime, lotOccupanciesTableAl
export function getOccupantNameWhereClause(occupantName = '', tableAlias = 'o') { export function getOccupantNameWhereClause(occupantName = '', tableAlias = 'o') {
let sqlWhereClause = ''; let sqlWhereClause = '';
const sqlParameters = []; const sqlParameters = [];
if (occupantName !== '') { const usedPieces = new Set();
const occupantNamePieces = occupantName.toLowerCase().split(' '); const occupantNamePieces = occupantName.toLowerCase().split(' ');
for (const occupantNamePiece of occupantNamePieces) { for (const occupantNamePiece of occupantNamePieces) {
if (occupantNamePiece === '') { if (occupantNamePiece === '' || usedPieces.has(occupantNamePiece)) {
continue; continue;
} }
usedPieces.add(occupantNamePiece);
sqlWhereClause += ` and (instr(lower(${tableAlias}.occupantName), ?) or instr(lower(${tableAlias}.occupantFamilyName), ?))`; sqlWhereClause += ` and (instr(lower(${tableAlias}.occupantName), ?) or instr(lower(${tableAlias}.occupantFamilyName), ?))`;
sqlParameters.push(occupantNamePiece, occupantNamePiece); sqlParameters.push(occupantNamePiece, occupantNamePiece);
} }
}
return { return {
sqlWhereClause, sqlWhereClause,
sqlParameters sqlParameters

View File

@ -28,14 +28,18 @@ export function getLotNameWhereClause(
break break
} }
default: { default: {
const usedPieces = new Set<string>()
const lotNamePieces = lotName.toLowerCase().split(' ') const lotNamePieces = lotName.toLowerCase().split(' ')
for (const lotNamePiece of lotNamePieces) { for (const lotNamePiece of lotNamePieces) {
if (lotNamePiece === '') { if (lotNamePiece === '' || usedPieces.has(lotNamePiece)) {
continue continue
} }
sqlWhereClause += usedPieces.add(lotNamePiece)
' and instr(lower(' + lotsTableAlias + '.lotName), ?)'
sqlWhereClause += ` and instr(lower(${lotsTableAlias}.lotName), ?)`
sqlParameters.push(lotNamePiece) sqlParameters.push(lotNamePiece)
} }
} }
@ -101,17 +105,19 @@ export function getOccupantNameWhereClause(
let sqlWhereClause = '' let sqlWhereClause = ''
const sqlParameters: unknown[] = [] const sqlParameters: unknown[] = []
if (occupantName !== '') { const usedPieces = new Set<string>()
const occupantNamePieces = occupantName.toLowerCase().split(' ') const occupantNamePieces = occupantName.toLowerCase().split(' ')
for (const occupantNamePiece of occupantNamePieces) { for (const occupantNamePiece of occupantNamePieces) {
if (occupantNamePiece === '') { if (occupantNamePiece === '' || usedPieces.has(occupantNamePiece)) {
continue continue
} }
usedPieces.add(occupantNamePiece)
sqlWhereClause += ` and (instr(lower(${tableAlias}.occupantName), ?) or instr(lower(${tableAlias}.occupantFamilyName), ?))` sqlWhereClause += ` and (instr(lower(${tableAlias}.occupantName), ?) or instr(lower(${tableAlias}.occupantFamilyName), ?))`
sqlParameters.push(occupantNamePiece, occupantNamePiece) sqlParameters.push(occupantNamePiece, occupantNamePiece)
} }
}
return { return {
sqlWhereClause, sqlWhereClause,