cache sort name function

deepsource-autofix-76c6eb20
Dan Gowans 2023-03-28 10:43:03 -04:00
parent ed9137e382
commit 31f439597e
2 changed files with 76 additions and 51 deletions

View File

@ -1,3 +1,4 @@
import NodeCache from 'node-cache';
import { config as cemeteryConfig } from './config.cemetery.ontario.js'; import { config as cemeteryConfig } from './config.cemetery.ontario.js';
export const config = Object.assign({}, cemeteryConfig); export const config = Object.assign({}, cemeteryConfig);
config.aliases.occupancyStartDate = 'Purchase Date'; config.aliases.occupancyStartDate = 'Purchase Date';
@ -7,36 +8,45 @@ config.settings.lot.lotNamePattern =
config.settings.lot.lotNameHelpText = `Two digit cemetery-Block-Range-Lot-Grave, Interment number\n config.settings.lot.lotNameHelpText = `Two digit cemetery-Block-Range-Lot-Grave, Interment number\n
ex. XX-BA-R41-L15-G3A, Interment 1`; ex. XX-BA-R41-L15-G3A, Interment 1`;
const numericPadding = '00000'; const numericPadding = '00000';
const lotNameSortNameCache = new NodeCache({
stdTTL: 5 * 60,
useClones: false
});
export function lotNameSortNameFunction(lotName) { export function lotNameSortNameFunction(lotName) {
try { let sortName = lotNameSortNameCache.get(lotName) ?? '';
const lotNameSplit = lotName.toUpperCase().split('-'); if (sortName === '') {
const cleanLotNamePieces = []; try {
for (let lotNamePiece of lotNameSplit) { const lotNameSplit = lotName.toUpperCase().split('-');
if (cleanLotNamePieces.length === 0) { const cleanLotNamePieces = [];
cleanLotNamePieces.push(lotNamePiece); for (let lotNamePiece of lotNameSplit) {
continue; if (cleanLotNamePieces.length === 0) {
} cleanLotNamePieces.push(lotNamePiece);
let numericPiece = numericPadding; continue;
let letterPiece = '';
const firstLetter = lotNamePiece.charAt(0);
lotNamePiece = lotNamePiece.slice(1);
for (const letter of lotNamePiece) {
if (letterPiece === '' && '0123456789'.includes(letter)) {
numericPiece += letter;
} }
else { let numericPiece = numericPadding;
letterPiece += letter; let letterPiece = '';
const firstLetter = lotNamePiece.charAt(0);
lotNamePiece = lotNamePiece.slice(1);
for (const letter of lotNamePiece) {
if (letterPiece === '' && '0123456789'.includes(letter)) {
numericPiece += letter;
}
else {
letterPiece += letter;
}
} }
cleanLotNamePieces.push(firstLetter +
numericPiece.slice(-1 * numericPadding.length) +
letterPiece);
} }
cleanLotNamePieces.push(firstLetter + sortName = cleanLotNamePieces.join('-');
numericPiece.slice(-1 * numericPadding.length) +
letterPiece);
} }
return cleanLotNamePieces.join('-'); catch {
} sortName = lotName;
catch { }
return lotName; lotNameSortNameCache.set(lotName, sortName);
} }
return sortName;
} }
config.settings.lot.lotNameSortNameFunction = lotNameSortNameFunction; config.settings.lot.lotNameSortNameFunction = lotNameSortNameFunction;
config.settings.lotOccupancy.occupantCityDefault = 'Sault Ste. Marie'; config.settings.lotOccupancy.occupantCityDefault = 'Sault Ste. Marie';

View File

@ -1,3 +1,5 @@
import NodeCache from 'node-cache'
import { config as cemeteryConfig } from './config.cemetery.ontario.js' import { config as cemeteryConfig } from './config.cemetery.ontario.js'
export const config = Object.assign({}, cemeteryConfig) export const config = Object.assign({}, cemeteryConfig)
@ -13,43 +15,56 @@ config.settings.lot.lotNameHelpText = `Two digit cemetery-Block-Range-Lot-Grave,
const numericPadding = '00000' const numericPadding = '00000'
const lotNameSortNameCache = new NodeCache({
stdTTL: 5 * 60,
useClones: false
})
export function lotNameSortNameFunction(lotName: string): string { export function lotNameSortNameFunction(lotName: string): string {
try { let sortName: string = lotNameSortNameCache.get(lotName) ?? ''
const lotNameSplit = lotName.toUpperCase().split('-')
const cleanLotNamePieces: string[] = [] if (sortName === '') {
try {
const lotNameSplit = lotName.toUpperCase().split('-')
for (let lotNamePiece of lotNameSplit) { const cleanLotNamePieces: string[] = []
if (cleanLotNamePieces.length === 0) {
cleanLotNamePieces.push(lotNamePiece)
continue
}
let numericPiece = numericPadding for (let lotNamePiece of lotNameSplit) {
let letterPiece = '' if (cleanLotNamePieces.length === 0) {
cleanLotNamePieces.push(lotNamePiece)
const firstLetter = lotNamePiece.charAt(0) continue
lotNamePiece = lotNamePiece.slice(1)
for (const letter of lotNamePiece) {
if (letterPiece === '' && '0123456789'.includes(letter)) {
numericPiece += letter
} else {
letterPiece += letter
} }
let numericPiece = numericPadding
let letterPiece = ''
const firstLetter = lotNamePiece.charAt(0)
lotNamePiece = lotNamePiece.slice(1)
for (const letter of lotNamePiece) {
if (letterPiece === '' && '0123456789'.includes(letter)) {
numericPiece += letter
} else {
letterPiece += letter
}
}
cleanLotNamePieces.push(
firstLetter +
numericPiece.slice(-1 * numericPadding.length) +
letterPiece
)
} }
cleanLotNamePieces.push( sortName = cleanLotNamePieces.join('-')
firstLetter + } catch {
numericPiece.slice(-1 * numericPadding.length) + sortName = lotName
letterPiece
)
} }
return cleanLotNamePieces.join('-') lotNameSortNameCache.set(lotName, sortName)
} catch {
return lotName
} }
return sortName
} }
config.settings.lot.lotNameSortNameFunction = lotNameSortNameFunction config.settings.lot.lotNameSortNameFunction = lotNameSortNameFunction