41 lines
1.9 KiB
JavaScript
41 lines
1.9 KiB
JavaScript
import sqlite from 'better-sqlite3';
|
|
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js';
|
|
export function getPastLotOccupancyOccupants(filters, options) {
|
|
const database = sqlite(databasePath, {
|
|
readonly: true
|
|
});
|
|
let sqlWhereClause = ' where o.recordDelete_timeMillis is null and l.recordDelete_timeMillis is null';
|
|
const sqlParameters = [];
|
|
if (filters.searchFilter) {
|
|
const searchFilterPieces = filters.searchFilter.split(' ');
|
|
for (const searchFilterPiece of searchFilterPieces) {
|
|
sqlWhereClause +=
|
|
" and (o.occupantName like '%' || ? || '%'" +
|
|
" or o.occupantAddress1 like '%' || ? || '%'" +
|
|
" or o.occupantAddress2 like '%' || ? || '%'" +
|
|
" or o.occupantCity like '%' || ? || '%')";
|
|
sqlParameters.push(searchFilterPiece, searchFilterPiece, searchFilterPiece, searchFilterPiece);
|
|
}
|
|
}
|
|
const sql = 'select' +
|
|
' o.occupantName, o.occupantAddress1, o.occupantAddress2,' +
|
|
' o.occupantCity, o.occupantProvince, o.occupantPostalCode,' +
|
|
' o.occupantPhoneNumber, o.occupantEmailAddress,' +
|
|
' count(*) as lotOccupancyIdCount,' +
|
|
' max(o.recordUpdate_timeMillis) as recordUpdate_timeMillisMax' +
|
|
' from LotOccupancyOccupants o' +
|
|
' left join LotOccupancies l on o.lotOccupancyId = l.lotOccupancyId' +
|
|
sqlWhereClause +
|
|
' group by occupantName, occupantAddress1, occupantAddress2, occupantCity, occupantProvince, occupantPostalCode,' +
|
|
' occupantPhoneNumber, occupantEmailAddress' +
|
|
' order by lotOccupancyIdCount desc, recordUpdate_timeMillisMax desc' +
|
|
' limit ' +
|
|
options.limit;
|
|
const lotOccupancyOccupants = database
|
|
.prepare(sql)
|
|
.all(sqlParameters);
|
|
database.close();
|
|
return lotOccupancyOccupants;
|
|
}
|
|
export default getPastLotOccupancyOccupants;
|