reduce complexity

deepsource-autofix-76c6eb20
Dan Gowans 2022-10-31 13:50:08 -04:00
parent dacaa3feb3
commit 47387ac479
5 changed files with 88 additions and 52 deletions

View File

@ -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" +

View File

@ -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

View File

@ -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[];
}; };

View File

@ -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);

View File

@ -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) {