reduce complexity
parent
dacaa3feb3
commit
47387ac479
|
|
@ -2,11 +2,7 @@ import sqlite from "better-sqlite3";
|
||||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||||
import { dateToInteger } from "@cityssm/expressjs-server-js/dateTimeFns.js";
|
import { dateToInteger } from "@cityssm/expressjs-server-js/dateTimeFns.js";
|
||||||
import * as configFunctions from "../functions.config.js";
|
import * as configFunctions from "../functions.config.js";
|
||||||
export const getLots = (filters, options, connectedDatabase) => {
|
const buildWhereClause = (filters) => {
|
||||||
const database = connectedDatabase ||
|
|
||||||
sqlite(databasePath, {
|
|
||||||
readonly: true
|
|
||||||
});
|
|
||||||
let sqlWhereClause = " where l.recordDelete_timeMillis is null";
|
let sqlWhereClause = " where l.recordDelete_timeMillis is null";
|
||||||
const sqlParameters = [];
|
const sqlParameters = [];
|
||||||
if (filters.lotName) {
|
if (filters.lotName) {
|
||||||
|
|
@ -51,8 +47,19 @@ export const getLots = (filters, options, connectedDatabase) => {
|
||||||
" and l.lotId in (select lotId from WorkOrderLots where recordDelete_timeMillis is null and workOrderId = ?)";
|
" and l.lotId in (select lotId from WorkOrderLots where recordDelete_timeMillis is null and workOrderId = ?)";
|
||||||
sqlParameters.push(filters.workOrderId);
|
sqlParameters.push(filters.workOrderId);
|
||||||
}
|
}
|
||||||
|
return {
|
||||||
|
sqlWhereClause,
|
||||||
|
sqlParameters
|
||||||
|
};
|
||||||
|
};
|
||||||
|
export const getLots = (filters, options, connectedDatabase) => {
|
||||||
|
const database = connectedDatabase ||
|
||||||
|
sqlite(databasePath, {
|
||||||
|
readonly: true
|
||||||
|
});
|
||||||
|
const { sqlWhereClause, sqlParameters } = buildWhereClause(filters);
|
||||||
const currentDate = dateToInteger(new Date());
|
const currentDate = dateToInteger(new Date());
|
||||||
let count;
|
let count = 0;
|
||||||
if (options.limit !== -1) {
|
if (options.limit !== -1) {
|
||||||
count = database
|
count = database
|
||||||
.prepare("select count(*) as recordCount" +
|
.prepare("select count(*) as recordCount" +
|
||||||
|
|
|
||||||
|
|
@ -23,22 +23,9 @@ interface GetLotsOptions {
|
||||||
offset: number;
|
offset: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getLots = (
|
const buildWhereClause = (filters: GetLotsFilters): { sqlWhereClause: string; sqlParameters: unknown[];} => {
|
||||||
filters: GetLotsFilters,
|
|
||||||
options: GetLotsOptions,
|
|
||||||
connectedDatabase?: sqlite.Database
|
|
||||||
): {
|
|
||||||
count: number;
|
|
||||||
lots: recordTypes.Lot[];
|
|
||||||
} => {
|
|
||||||
const database =
|
|
||||||
connectedDatabase ||
|
|
||||||
sqlite(databasePath, {
|
|
||||||
readonly: true
|
|
||||||
});
|
|
||||||
|
|
||||||
let sqlWhereClause = " where l.recordDelete_timeMillis is null";
|
let sqlWhereClause = " where l.recordDelete_timeMillis is null";
|
||||||
const sqlParameters = [];
|
const sqlParameters: unknown[] = [];
|
||||||
|
|
||||||
if (filters.lotName) {
|
if (filters.lotName) {
|
||||||
if (filters.lotNameSearchType === "startsWith") {
|
if (filters.lotNameSearchType === "startsWith") {
|
||||||
|
|
@ -86,9 +73,31 @@ export const getLots = (
|
||||||
sqlParameters.push(filters.workOrderId);
|
sqlParameters.push(filters.workOrderId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
sqlWhereClause,
|
||||||
|
sqlParameters
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
export const getLots = (
|
||||||
|
filters: GetLotsFilters,
|
||||||
|
options: GetLotsOptions,
|
||||||
|
connectedDatabase?: sqlite.Database
|
||||||
|
): {
|
||||||
|
count: number;
|
||||||
|
lots: recordTypes.Lot[];
|
||||||
|
} => {
|
||||||
|
const database =
|
||||||
|
connectedDatabase ||
|
||||||
|
sqlite(databasePath, {
|
||||||
|
readonly: true
|
||||||
|
});
|
||||||
|
|
||||||
|
const { sqlWhereClause, sqlParameters } = buildWhereClause(filters);
|
||||||
|
|
||||||
const currentDate = dateToInteger(new Date());
|
const currentDate = dateToInteger(new Date());
|
||||||
|
|
||||||
let count: number;
|
let count = 0;
|
||||||
|
|
||||||
if (options.limit !== -1) {
|
if (options.limit !== -1) {
|
||||||
count = database
|
count = database
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ interface GetWorkOrdersOptions {
|
||||||
includeComments?: boolean;
|
includeComments?: boolean;
|
||||||
includeMilestones?: boolean;
|
includeMilestones?: boolean;
|
||||||
}
|
}
|
||||||
export declare const getWorkOrders: (filters?: GetWorkOrdersFilters, options?: GetWorkOrdersOptions) => {
|
export declare const getWorkOrders: (filters: GetWorkOrdersFilters, options?: GetWorkOrdersOptions) => {
|
||||||
count: number;
|
count: number;
|
||||||
workOrders: recordTypes.WorkOrder[];
|
workOrders: recordTypes.WorkOrder[];
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -5,11 +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";
|
||||||
export const getWorkOrders = (filters, options) => {
|
const buildWhereClause = (filters) => {
|
||||||
const database = sqlite(databasePath, {
|
|
||||||
readonly: true
|
|
||||||
});
|
|
||||||
database.function("userFn_dateIntegerToString", dateIntegerToString);
|
|
||||||
let sqlWhereClause = " where w.recordDelete_timeMillis is null";
|
let sqlWhereClause = " where w.recordDelete_timeMillis is null";
|
||||||
const sqlParameters = [];
|
const sqlParameters = [];
|
||||||
if (filters.workOrderTypeId) {
|
if (filters.workOrderTypeId) {
|
||||||
|
|
@ -46,8 +42,19 @@ export const getWorkOrders = (filters, options) => {
|
||||||
sqlParameters.push(lotNamePiece);
|
sqlParameters.push(lotNamePiece);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return {
|
||||||
|
sqlWhereClause,
|
||||||
|
sqlParameters
|
||||||
|
};
|
||||||
|
};
|
||||||
|
export const getWorkOrders = (filters, options) => {
|
||||||
|
const database = sqlite(databasePath, {
|
||||||
|
readonly: true
|
||||||
|
});
|
||||||
|
database.function("userFn_dateIntegerToString", dateIntegerToString);
|
||||||
|
const { sqlWhereClause, sqlParameters } = buildWhereClause(filters);
|
||||||
const count = database
|
const count = database
|
||||||
.prepare("select count(*) as recordCount" + " from WorkOrders w" + sqlWhereClause)
|
.prepare("select count(*) as recordCount from WorkOrders w" + sqlWhereClause)
|
||||||
.get(sqlParameters).recordCount;
|
.get(sqlParameters).recordCount;
|
||||||
let workOrders = [];
|
let workOrders = [];
|
||||||
if (count > 0) {
|
if (count > 0) {
|
||||||
|
|
@ -72,9 +79,10 @@ export const getWorkOrders = (filters, options) => {
|
||||||
(options ? " limit " + options.limit + " offset " + options.offset : ""))
|
(options ? " limit " + options.limit + " offset " + options.offset : ""))
|
||||||
.all(sqlParameters);
|
.all(sqlParameters);
|
||||||
}
|
}
|
||||||
if (options.includeComments ||
|
if (options &&
|
||||||
options.includeLotsAndLotOccupancies ||
|
(options.includeComments ||
|
||||||
options.includeMilestones) {
|
options.includeLotsAndLotOccupancies ||
|
||||||
|
options.includeMilestones)) {
|
||||||
for (const workOrder of workOrders) {
|
for (const workOrder of workOrders) {
|
||||||
if (options.includeComments) {
|
if (options.includeComments) {
|
||||||
workOrder.workOrderComments = getWorkOrderComments(workOrder.workOrderId, database);
|
workOrder.workOrderComments = getWorkOrderComments(workOrder.workOrderId, database);
|
||||||
|
|
|
||||||
|
|
@ -30,21 +30,11 @@ interface GetWorkOrdersOptions {
|
||||||
includeMilestones?: boolean;
|
includeMilestones?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getWorkOrders = (
|
const buildWhereClause = (
|
||||||
filters?: GetWorkOrdersFilters,
|
filters: GetWorkOrdersFilters
|
||||||
options?: GetWorkOrdersOptions
|
): { sqlWhereClause: string; sqlParameters: unknown[] } => {
|
||||||
): {
|
|
||||||
count: number;
|
|
||||||
workOrders: recordTypes.WorkOrder[];
|
|
||||||
} => {
|
|
||||||
const database = sqlite(databasePath, {
|
|
||||||
readonly: true
|
|
||||||
});
|
|
||||||
|
|
||||||
database.function("userFn_dateIntegerToString", dateIntegerToString);
|
|
||||||
|
|
||||||
let sqlWhereClause = " where w.recordDelete_timeMillis is null";
|
let sqlWhereClause = " where w.recordDelete_timeMillis is null";
|
||||||
const sqlParameters = [];
|
const sqlParameters: unknown[] = [];
|
||||||
|
|
||||||
if (filters.workOrderTypeId) {
|
if (filters.workOrderTypeId) {
|
||||||
sqlWhereClause += " and w.workOrderTypeId = ?";
|
sqlWhereClause += " and w.workOrderTypeId = ?";
|
||||||
|
|
@ -84,8 +74,29 @@ export const getWorkOrders = (
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
sqlWhereClause,
|
||||||
|
sqlParameters
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
export const getWorkOrders = (
|
||||||
|
filters: GetWorkOrdersFilters,
|
||||||
|
options?: GetWorkOrdersOptions
|
||||||
|
): {
|
||||||
|
count: number;
|
||||||
|
workOrders: recordTypes.WorkOrder[];
|
||||||
|
} => {
|
||||||
|
const database = sqlite(databasePath, {
|
||||||
|
readonly: true
|
||||||
|
});
|
||||||
|
|
||||||
|
database.function("userFn_dateIntegerToString", dateIntegerToString);
|
||||||
|
|
||||||
|
const { sqlWhereClause, sqlParameters } = buildWhereClause(filters);
|
||||||
|
|
||||||
const count: number = database
|
const count: number = database
|
||||||
.prepare("select count(*) as recordCount" + " from WorkOrders w" + sqlWhereClause)
|
.prepare("select count(*) as recordCount from WorkOrders w" + sqlWhereClause)
|
||||||
.get(sqlParameters).recordCount;
|
.get(sqlParameters).recordCount;
|
||||||
|
|
||||||
let workOrders: recordTypes.WorkOrder[] = [];
|
let workOrders: recordTypes.WorkOrder[] = [];
|
||||||
|
|
@ -116,13 +127,14 @@ export const getWorkOrders = (
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
options.includeComments ||
|
options &&
|
||||||
options.includeLotsAndLotOccupancies ||
|
(options.includeComments ||
|
||||||
options.includeMilestones
|
options.includeLotsAndLotOccupancies ||
|
||||||
|
options.includeMilestones)
|
||||||
) {
|
) {
|
||||||
for (const workOrder of workOrders) {
|
for (const workOrder of workOrders) {
|
||||||
if (options.includeComments) {
|
if (options.includeComments) {
|
||||||
workOrder.workOrderComments = getWorkOrderComments(workOrder.workOrderId, database);
|
workOrder.workOrderComments = getWorkOrderComments(workOrder.workOrderId as number, database);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.includeLotsAndLotOccupancies) {
|
if (options.includeLotsAndLotOccupancies) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue