sunrise-cms/helpers/lotOccupancyDB/getLotStatusSummary.ts

45 lines
1.2 KiB
TypeScript

import sqlite from "better-sqlite3";
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
import type * as recordTypes from "../../types/recordTypes";
interface GetFilters {
mapId?: number | string;
}
interface LotStatusSummary extends recordTypes.LotStatus {
lotCount: number;
}
export const getLotStatusSummary = (filters?: GetFilters): LotStatusSummary[] => {
const database = sqlite(databasePath, {
readonly: true
});
let sqlWhereClause = " where l.recordDelete_timeMillis is null";
const sqlParameters: unknown[] = [];
if (filters && filters.mapId) {
sqlWhereClause += " and l.mapId = ?";
sqlParameters.push(filters.mapId);
}
const lotStatuses: LotStatusSummary[] = database
.prepare(
"select s.lotStatusId, s.lotStatus, count(l.lotId) as lotCount" +
" from Lots l" +
" left join LotStatuses s on l.lotStatusId = s.lotStatusId" +
sqlWhereClause +
" group by s.lotStatusId, s.lotStatus, s.orderNumber" +
" order by s.orderNumber"
)
.all(sqlParameters);
database.close();
return lotStatuses;
};
export default getLotStatusSummary;