linting
parent
991ad5bc82
commit
263c316573
|
|
@ -1,4 +1,4 @@
|
|||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes';
|
||||
interface AddOccupancyTypeFieldForm {
|
||||
occupancyTypeId?: string | number;
|
||||
occupancyTypeField: string;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { clearCacheByTableName } from "../functions.cache.js";
|
||||
import sqlite from 'better-sqlite3';
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js';
|
||||
import { clearCacheByTableName } from '../functions.cache.js';
|
||||
export function addOccupancyTypeField(occupancyTypeFieldForm, requestSession) {
|
||||
const database = sqlite(databasePath);
|
||||
const rightNowMillis = Date.now();
|
||||
|
|
@ -13,9 +13,9 @@ export function addOccupancyTypeField(occupancyTypeFieldForm, requestSession) {
|
|||
recordCreate_userName, recordCreate_timeMillis,
|
||||
recordUpdate_userName, recordUpdate_timeMillis)
|
||||
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
|
||||
.run(occupancyTypeFieldForm.occupancyTypeId || undefined, occupancyTypeFieldForm.occupancyTypeField, occupancyTypeFieldForm.occupancyTypeFieldValues || "", occupancyTypeFieldForm.isRequired ? 1 : 0, occupancyTypeFieldForm.pattern || "", occupancyTypeFieldForm.minimumLength || 0, occupancyTypeFieldForm.maximumLength || 100, occupancyTypeFieldForm.orderNumber || -1, requestSession.user.userName, rightNowMillis, requestSession.user.userName, rightNowMillis);
|
||||
.run(occupancyTypeFieldForm.occupancyTypeId ?? undefined, occupancyTypeFieldForm.occupancyTypeField, occupancyTypeFieldForm.occupancyTypeFieldValues ?? '', occupancyTypeFieldForm.isRequired === '' ? 0 : 1, occupancyTypeFieldForm.pattern ?? '', occupancyTypeFieldForm.minimumLength ?? 0, occupancyTypeFieldForm.maximumLength ?? 100, occupancyTypeFieldForm.orderNumber ?? -1, requestSession.user.userName, rightNowMillis, requestSession.user.userName, rightNowMillis);
|
||||
database.close();
|
||||
clearCacheByTableName("OccupancyTypeFields");
|
||||
clearCacheByTableName('OccupancyTypeFields');
|
||||
return result.lastInsertRowid;
|
||||
}
|
||||
export default addOccupancyTypeField;
|
||||
|
|
|
|||
|
|
@ -1,28 +1,28 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import sqlite from 'better-sqlite3'
|
||||
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'
|
||||
|
||||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import { clearCacheByTableName } from "../functions.cache.js";
|
||||
import type * as recordTypes from '../../types/recordTypes'
|
||||
import { clearCacheByTableName } from '../functions.cache.js'
|
||||
|
||||
interface AddOccupancyTypeFieldForm {
|
||||
occupancyTypeId?: string | number;
|
||||
occupancyTypeField: string;
|
||||
occupancyTypeFieldValues?: string;
|
||||
isRequired?: string;
|
||||
pattern?: string;
|
||||
minimumLength: string | number;
|
||||
maximumLength: string | number;
|
||||
orderNumber?: number;
|
||||
occupancyTypeId?: string | number
|
||||
occupancyTypeField: string
|
||||
occupancyTypeFieldValues?: string
|
||||
isRequired?: string
|
||||
pattern?: string
|
||||
minimumLength: string | number
|
||||
maximumLength: string | number
|
||||
orderNumber?: number
|
||||
}
|
||||
|
||||
export function addOccupancyTypeField(
|
||||
occupancyTypeFieldForm: AddOccupancyTypeFieldForm,
|
||||
requestSession: recordTypes.PartialSession
|
||||
): number {
|
||||
const database = sqlite(databasePath);
|
||||
const database = sqlite(databasePath)
|
||||
|
||||
const rightNowMillis = Date.now();
|
||||
const rightNowMillis = Date.now()
|
||||
|
||||
const result = database
|
||||
.prepare(
|
||||
|
|
@ -36,25 +36,25 @@ export function addOccupancyTypeField(
|
|||
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`
|
||||
)
|
||||
.run(
|
||||
occupancyTypeFieldForm.occupancyTypeId || undefined,
|
||||
occupancyTypeFieldForm.occupancyTypeId ?? undefined,
|
||||
occupancyTypeFieldForm.occupancyTypeField,
|
||||
occupancyTypeFieldForm.occupancyTypeFieldValues || "",
|
||||
occupancyTypeFieldForm.isRequired ? 1 : 0,
|
||||
occupancyTypeFieldForm.pattern || "",
|
||||
occupancyTypeFieldForm.minimumLength || 0,
|
||||
occupancyTypeFieldForm.maximumLength || 100,
|
||||
occupancyTypeFieldForm.orderNumber || -1,
|
||||
requestSession.user.userName,
|
||||
occupancyTypeFieldForm.occupancyTypeFieldValues ?? '',
|
||||
occupancyTypeFieldForm.isRequired === '' ? 0 : 1,
|
||||
occupancyTypeFieldForm.pattern ?? '',
|
||||
occupancyTypeFieldForm.minimumLength ?? 0,
|
||||
occupancyTypeFieldForm.maximumLength ?? 100,
|
||||
occupancyTypeFieldForm.orderNumber ?? -1,
|
||||
requestSession.user!.userName,
|
||||
rightNowMillis,
|
||||
requestSession.user.userName,
|
||||
requestSession.user!.userName,
|
||||
rightNowMillis
|
||||
);
|
||||
)
|
||||
|
||||
database.close();
|
||||
database.close()
|
||||
|
||||
clearCacheByTableName("OccupancyTypeFields");
|
||||
clearCacheByTableName('OccupancyTypeFields')
|
||||
|
||||
return result.lastInsertRowid as number;
|
||||
return result.lastInsertRowid as number
|
||||
}
|
||||
|
||||
export default addOccupancyTypeField;
|
||||
export default addOccupancyTypeField
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes';
|
||||
interface OccupancyTypePrintForm {
|
||||
occupancyTypeId: string | number;
|
||||
printEJS: string;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { clearCacheByTableName } from "../functions.cache.js";
|
||||
import sqlite from 'better-sqlite3';
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js';
|
||||
import { clearCacheByTableName } from '../functions.cache.js';
|
||||
export function addOccupancyTypePrint(occupancyTypePrintForm, requestSession) {
|
||||
const database = sqlite(databasePath);
|
||||
const rightNowMillis = Date.now();
|
||||
|
|
@ -20,10 +20,10 @@ export function addOccupancyTypePrint(occupancyTypePrintForm, requestSession) {
|
|||
recordCreate_userName, recordCreate_timeMillis,
|
||||
recordUpdate_userName, recordUpdate_timeMillis)
|
||||
values (?, ?, ?, ?, ?, ?, ?)`)
|
||||
.run(occupancyTypePrintForm.occupancyTypeId, occupancyTypePrintForm.printEJS, occupancyTypePrintForm.orderNumber || -1, requestSession.user.userName, rightNowMillis, requestSession.user.userName, rightNowMillis);
|
||||
.run(occupancyTypePrintForm.occupancyTypeId, occupancyTypePrintForm.printEJS, occupancyTypePrintForm.orderNumber ?? -1, requestSession.user.userName, rightNowMillis, requestSession.user.userName, rightNowMillis);
|
||||
}
|
||||
database.close();
|
||||
clearCacheByTableName("OccupancyTypePrints");
|
||||
clearCacheByTableName('OccupancyTypePrints');
|
||||
return result.changes > 0;
|
||||
}
|
||||
export default addOccupancyTypePrint;
|
||||
|
|
|
|||
|
|
@ -1,24 +1,24 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import sqlite from 'better-sqlite3'
|
||||
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'
|
||||
|
||||
import { clearCacheByTableName } from "../functions.cache.js";
|
||||
import { clearCacheByTableName } from '../functions.cache.js'
|
||||
|
||||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes'
|
||||
|
||||
interface OccupancyTypePrintForm {
|
||||
occupancyTypeId: string | number;
|
||||
printEJS: string;
|
||||
orderNumber?: number;
|
||||
occupancyTypeId: string | number
|
||||
printEJS: string
|
||||
orderNumber?: number
|
||||
}
|
||||
|
||||
export function addOccupancyTypePrint(
|
||||
occupancyTypePrintForm: OccupancyTypePrintForm,
|
||||
requestSession: recordTypes.PartialSession
|
||||
): boolean {
|
||||
const database = sqlite(databasePath);
|
||||
const database = sqlite(databasePath)
|
||||
|
||||
const rightNowMillis = Date.now();
|
||||
const rightNowMillis = Date.now()
|
||||
|
||||
let result = database
|
||||
.prepare(
|
||||
|
|
@ -31,11 +31,11 @@ export function addOccupancyTypePrint(
|
|||
and printEJS = ?`
|
||||
)
|
||||
.run(
|
||||
requestSession.user.userName,
|
||||
requestSession.user!.userName,
|
||||
rightNowMillis,
|
||||
occupancyTypePrintForm.occupancyTypeId,
|
||||
occupancyTypePrintForm.printEJS
|
||||
);
|
||||
)
|
||||
|
||||
if (result.changes === 0) {
|
||||
result = database
|
||||
|
|
@ -49,19 +49,19 @@ export function addOccupancyTypePrint(
|
|||
.run(
|
||||
occupancyTypePrintForm.occupancyTypeId,
|
||||
occupancyTypePrintForm.printEJS,
|
||||
occupancyTypePrintForm.orderNumber || -1,
|
||||
requestSession.user.userName,
|
||||
occupancyTypePrintForm.orderNumber ?? -1,
|
||||
requestSession.user!.userName,
|
||||
rightNowMillis,
|
||||
requestSession.user.userName,
|
||||
requestSession.user!.userName,
|
||||
rightNowMillis
|
||||
);
|
||||
)
|
||||
}
|
||||
|
||||
database.close();
|
||||
database.close()
|
||||
|
||||
clearCacheByTableName("OccupancyTypePrints");
|
||||
clearCacheByTableName('OccupancyTypePrints')
|
||||
|
||||
return result.changes > 0;
|
||||
return result.changes > 0
|
||||
}
|
||||
|
||||
export default addOccupancyTypePrint;
|
||||
export default addOccupancyTypePrint
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import sqlite from 'better-sqlite3';
|
||||
import type * as recordTypes from '../../types/recordTypes';
|
||||
interface LotFieldForm {
|
||||
lotId: string | number;
|
||||
lotTypeFieldId: string | number;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import sqlite from 'better-sqlite3';
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js';
|
||||
export function addOrUpdateLotField(lotFieldForm, requestSession, connectedDatabase) {
|
||||
const database = connectedDatabase || sqlite(databasePath);
|
||||
const database = connectedDatabase ?? sqlite(databasePath);
|
||||
const rightNowMillis = Date.now();
|
||||
let result = database
|
||||
.prepare(`update LotFields
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import sqlite from 'better-sqlite3'
|
||||
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'
|
||||
|
||||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes'
|
||||
|
||||
interface LotFieldForm {
|
||||
lotId: string | number;
|
||||
lotTypeFieldId: string | number;
|
||||
lotFieldValue: string;
|
||||
lotId: string | number
|
||||
lotTypeFieldId: string | number
|
||||
lotFieldValue: string
|
||||
}
|
||||
|
||||
export function addOrUpdateLotField(
|
||||
|
|
@ -15,9 +15,9 @@ export function addOrUpdateLotField(
|
|||
requestSession: recordTypes.PartialSession,
|
||||
connectedDatabase?: sqlite.Database
|
||||
): boolean {
|
||||
const database = connectedDatabase || sqlite(databasePath);
|
||||
const database = connectedDatabase ?? sqlite(databasePath)
|
||||
|
||||
const rightNowMillis = Date.now();
|
||||
const rightNowMillis = Date.now()
|
||||
|
||||
let result = database
|
||||
.prepare(
|
||||
|
|
@ -32,11 +32,11 @@ export function addOrUpdateLotField(
|
|||
)
|
||||
.run(
|
||||
lotFieldForm.lotFieldValue,
|
||||
requestSession.user.userName,
|
||||
requestSession.user!.userName,
|
||||
rightNowMillis,
|
||||
lotFieldForm.lotId,
|
||||
lotFieldForm.lotTypeFieldId
|
||||
);
|
||||
)
|
||||
|
||||
if (result.changes === 0) {
|
||||
result = database
|
||||
|
|
@ -51,18 +51,18 @@ export function addOrUpdateLotField(
|
|||
lotFieldForm.lotId,
|
||||
lotFieldForm.lotTypeFieldId,
|
||||
lotFieldForm.lotFieldValue,
|
||||
requestSession.user.userName,
|
||||
requestSession.user!.userName,
|
||||
rightNowMillis,
|
||||
requestSession.user.userName,
|
||||
requestSession.user!.userName,
|
||||
rightNowMillis
|
||||
);
|
||||
)
|
||||
}
|
||||
|
||||
if (!connectedDatabase) {
|
||||
database.close();
|
||||
database.close()
|
||||
}
|
||||
|
||||
return result.changes > 0;
|
||||
return result.changes > 0
|
||||
}
|
||||
|
||||
export default addOrUpdateLotField;
|
||||
export default addOrUpdateLotField
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import sqlite from 'better-sqlite3';
|
||||
import type * as recordTypes from '../../types/recordTypes';
|
||||
interface LotOccupancyFieldForm {
|
||||
lotOccupancyId: string | number;
|
||||
occupancyTypeFieldId: string | number;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import sqlite from 'better-sqlite3';
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js';
|
||||
export function addOrUpdateLotOccupancyField(lotOccupancyFieldForm, requestSession, connectedDatabase) {
|
||||
const database = connectedDatabase || sqlite(databasePath);
|
||||
const database = connectedDatabase ?? sqlite(databasePath);
|
||||
const rightNowMillis = Date.now();
|
||||
let result = database
|
||||
.prepare(`update LotOccupancyFields
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import sqlite from 'better-sqlite3'
|
||||
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'
|
||||
|
||||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes'
|
||||
|
||||
interface LotOccupancyFieldForm {
|
||||
lotOccupancyId: string | number;
|
||||
occupancyTypeFieldId: string | number;
|
||||
lotOccupancyFieldValue: string;
|
||||
lotOccupancyId: string | number
|
||||
occupancyTypeFieldId: string | number
|
||||
lotOccupancyFieldValue: string
|
||||
}
|
||||
|
||||
export function addOrUpdateLotOccupancyField(
|
||||
|
|
@ -15,9 +15,9 @@ export function addOrUpdateLotOccupancyField(
|
|||
requestSession: recordTypes.PartialSession,
|
||||
connectedDatabase?: sqlite.Database
|
||||
): boolean {
|
||||
const database = connectedDatabase || sqlite(databasePath);
|
||||
const database = connectedDatabase ?? sqlite(databasePath)
|
||||
|
||||
const rightNowMillis = Date.now();
|
||||
const rightNowMillis = Date.now()
|
||||
|
||||
let result = database
|
||||
.prepare(
|
||||
|
|
@ -32,11 +32,11 @@ export function addOrUpdateLotOccupancyField(
|
|||
)
|
||||
.run(
|
||||
lotOccupancyFieldForm.lotOccupancyFieldValue,
|
||||
requestSession.user.userName,
|
||||
requestSession.user!.userName,
|
||||
rightNowMillis,
|
||||
lotOccupancyFieldForm.lotOccupancyId,
|
||||
lotOccupancyFieldForm.occupancyTypeFieldId
|
||||
);
|
||||
)
|
||||
|
||||
if (result.changes === 0) {
|
||||
result = database
|
||||
|
|
@ -51,18 +51,18 @@ export function addOrUpdateLotOccupancyField(
|
|||
lotOccupancyFieldForm.lotOccupancyId,
|
||||
lotOccupancyFieldForm.occupancyTypeFieldId,
|
||||
lotOccupancyFieldForm.lotOccupancyFieldValue,
|
||||
requestSession.user.userName,
|
||||
requestSession.user!.userName,
|
||||
rightNowMillis,
|
||||
requestSession.user.userName,
|
||||
requestSession.user!.userName,
|
||||
rightNowMillis
|
||||
);
|
||||
)
|
||||
}
|
||||
|
||||
if (!connectedDatabase) {
|
||||
database.close();
|
||||
database.close()
|
||||
}
|
||||
|
||||
return result.changes > 0;
|
||||
return result.changes > 0
|
||||
}
|
||||
|
||||
export default addOrUpdateLotOccupancyField;
|
||||
export default addOrUpdateLotOccupancyField
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import type * as recordTypes from "../../types/recordTypes";
|
||||
declare type RecordTable = "FeeCategories" | "LotStatuses" | "LotTypes" | "OccupancyTypes" | "WorkOrderMilestoneTypes" | "WorkOrderTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes';
|
||||
declare type RecordTable = 'FeeCategories' | 'LotStatuses' | 'LotTypes' | 'OccupancyTypes' | 'WorkOrderMilestoneTypes' | 'WorkOrderTypes';
|
||||
export declare function addRecord(recordTable: RecordTable, recordName: string, orderNumber: number, requestSession: recordTypes.PartialSession): number;
|
||||
export {};
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { clearCacheByTableName } from "../functions.cache.js";
|
||||
import sqlite from 'better-sqlite3';
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js';
|
||||
import { clearCacheByTableName } from '../functions.cache.js';
|
||||
const recordNameColumns = new Map();
|
||||
recordNameColumns.set("FeeCategories", "feeCategory");
|
||||
recordNameColumns.set("LotStatuses", "lotStatus");
|
||||
recordNameColumns.set("LotTypes", "lotType");
|
||||
recordNameColumns.set("OccupancyTypes", "occupancyType");
|
||||
recordNameColumns.set("WorkOrderMilestoneTypes", "workOrderMilestoneType");
|
||||
recordNameColumns.set("WorkOrderTypes", "workOrderType");
|
||||
recordNameColumns.set('FeeCategories', 'feeCategory');
|
||||
recordNameColumns.set('LotStatuses', 'lotStatus');
|
||||
recordNameColumns.set('LotTypes', 'lotType');
|
||||
recordNameColumns.set('OccupancyTypes', 'occupancyType');
|
||||
recordNameColumns.set('WorkOrderMilestoneTypes', 'workOrderMilestoneType');
|
||||
recordNameColumns.set('WorkOrderTypes', 'workOrderType');
|
||||
export function addRecord(recordTable, recordName, orderNumber, requestSession) {
|
||||
const database = sqlite(databasePath);
|
||||
const rightNowMillis = Date.now();
|
||||
|
|
|
|||
|
|
@ -1,25 +1,25 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import sqlite from 'better-sqlite3'
|
||||
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'
|
||||
|
||||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import { clearCacheByTableName } from "../functions.cache.js";
|
||||
import type * as recordTypes from '../../types/recordTypes'
|
||||
import { clearCacheByTableName } from '../functions.cache.js'
|
||||
|
||||
type RecordTable =
|
||||
| "FeeCategories"
|
||||
| "LotStatuses"
|
||||
| "LotTypes"
|
||||
| "OccupancyTypes"
|
||||
| "WorkOrderMilestoneTypes"
|
||||
| "WorkOrderTypes";
|
||||
| 'FeeCategories'
|
||||
| 'LotStatuses'
|
||||
| 'LotTypes'
|
||||
| 'OccupancyTypes'
|
||||
| 'WorkOrderMilestoneTypes'
|
||||
| 'WorkOrderTypes'
|
||||
|
||||
const recordNameColumns: Map<RecordTable, string> = new Map();
|
||||
recordNameColumns.set("FeeCategories", "feeCategory");
|
||||
recordNameColumns.set("LotStatuses", "lotStatus");
|
||||
recordNameColumns.set("LotTypes", "lotType");
|
||||
recordNameColumns.set("OccupancyTypes", "occupancyType");
|
||||
recordNameColumns.set("WorkOrderMilestoneTypes", "workOrderMilestoneType");
|
||||
recordNameColumns.set("WorkOrderTypes", "workOrderType");
|
||||
const recordNameColumns: Map<RecordTable, string> = new Map()
|
||||
recordNameColumns.set('FeeCategories', 'feeCategory')
|
||||
recordNameColumns.set('LotStatuses', 'lotStatus')
|
||||
recordNameColumns.set('LotTypes', 'lotType')
|
||||
recordNameColumns.set('OccupancyTypes', 'occupancyType')
|
||||
recordNameColumns.set('WorkOrderMilestoneTypes', 'workOrderMilestoneType')
|
||||
recordNameColumns.set('WorkOrderTypes', 'workOrderType')
|
||||
|
||||
export function addRecord(
|
||||
recordTable: RecordTable,
|
||||
|
|
@ -27,14 +27,14 @@ export function addRecord(
|
|||
orderNumber: number,
|
||||
requestSession: recordTypes.PartialSession
|
||||
): number {
|
||||
const database = sqlite(databasePath);
|
||||
const database = sqlite(databasePath)
|
||||
|
||||
const rightNowMillis = Date.now();
|
||||
const rightNowMillis = Date.now()
|
||||
|
||||
const result = database
|
||||
.prepare(
|
||||
`insert into ${recordTable} (
|
||||
${recordNameColumns.get(recordTable)}, orderNumber,
|
||||
${recordNameColumns.get(recordTable)!}, orderNumber,
|
||||
recordCreate_userName, recordCreate_timeMillis,
|
||||
recordUpdate_userName, recordUpdate_timeMillis)
|
||||
values (?, ?, ?, ?, ?, ?)`
|
||||
|
|
@ -42,15 +42,15 @@ export function addRecord(
|
|||
.run(
|
||||
recordName,
|
||||
orderNumber,
|
||||
requestSession.user.userName,
|
||||
requestSession.user!.userName,
|
||||
rightNowMillis,
|
||||
requestSession.user.userName,
|
||||
requestSession.user!.userName,
|
||||
rightNowMillis
|
||||
);
|
||||
)
|
||||
|
||||
database.close();
|
||||
database.close()
|
||||
|
||||
clearCacheByTableName(recordTable);
|
||||
clearCacheByTableName(recordTable)
|
||||
|
||||
return result.lastInsertRowid as number;
|
||||
return result.lastInsertRowid as number
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes';
|
||||
interface AddWorkOrderForm {
|
||||
workOrderTypeId: number | string;
|
||||
workOrderNumber?: string;
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { getNextWorkOrderNumber } from "./getNextWorkOrderNumber.js";
|
||||
import { addWorkOrderLotOccupancy } from "./addWorkOrderLotOccupancy.js";
|
||||
import { dateStringToInteger, dateToInteger } from "@cityssm/expressjs-server-js/dateTimeFns.js";
|
||||
import sqlite from 'better-sqlite3';
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js';
|
||||
import { getNextWorkOrderNumber } from './getNextWorkOrderNumber.js';
|
||||
import { addWorkOrderLotOccupancy } from './addWorkOrderLotOccupancy.js';
|
||||
import { dateStringToInteger, dateToInteger } from '@cityssm/expressjs-server-js/dateTimeFns.js';
|
||||
export function addWorkOrder(workOrderForm, requestSession) {
|
||||
const database = sqlite(databasePath);
|
||||
const rightNow = new Date();
|
||||
|
|
|
|||
|
|
@ -1,35 +1,38 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import sqlite from 'better-sqlite3'
|
||||
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'
|
||||
|
||||
import { getNextWorkOrderNumber } from "./getNextWorkOrderNumber.js";
|
||||
import { addWorkOrderLotOccupancy } from "./addWorkOrderLotOccupancy.js";
|
||||
import { getNextWorkOrderNumber } from './getNextWorkOrderNumber.js'
|
||||
import { addWorkOrderLotOccupancy } from './addWorkOrderLotOccupancy.js'
|
||||
|
||||
import { dateStringToInteger, dateToInteger } from "@cityssm/expressjs-server-js/dateTimeFns.js";
|
||||
import {
|
||||
dateStringToInteger,
|
||||
dateToInteger
|
||||
} from '@cityssm/expressjs-server-js/dateTimeFns.js'
|
||||
|
||||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes'
|
||||
|
||||
interface AddWorkOrderForm {
|
||||
workOrderTypeId: number | string;
|
||||
workOrderNumber?: string;
|
||||
workOrderDescription: string;
|
||||
workOrderOpenDateString?: string;
|
||||
workOrderCloseDateString?: string;
|
||||
lotOccupancyId?: string;
|
||||
workOrderTypeId: number | string
|
||||
workOrderNumber?: string
|
||||
workOrderDescription: string
|
||||
workOrderOpenDateString?: string
|
||||
workOrderCloseDateString?: string
|
||||
lotOccupancyId?: string
|
||||
}
|
||||
|
||||
export function addWorkOrder(
|
||||
workOrderForm: AddWorkOrderForm,
|
||||
requestSession: recordTypes.PartialSession
|
||||
): number {
|
||||
const database = sqlite(databasePath);
|
||||
const database = sqlite(databasePath)
|
||||
|
||||
const rightNow = new Date();
|
||||
const rightNow = new Date()
|
||||
|
||||
let workOrderNumber = workOrderForm.workOrderNumber;
|
||||
let workOrderNumber = workOrderForm.workOrderNumber
|
||||
|
||||
if (!workOrderNumber) {
|
||||
workOrderNumber = getNextWorkOrderNumber(database);
|
||||
workOrderNumber = getNextWorkOrderNumber(database)
|
||||
}
|
||||
|
||||
const result = database
|
||||
|
|
@ -51,13 +54,13 @@ export function addWorkOrder(
|
|||
workOrderForm.workOrderCloseDateString
|
||||
? dateStringToInteger(workOrderForm.workOrderCloseDateString)
|
||||
: undefined,
|
||||
requestSession.user.userName,
|
||||
requestSession.user!.userName,
|
||||
rightNow.getTime(),
|
||||
requestSession.user.userName,
|
||||
requestSession.user!.userName,
|
||||
rightNow.getTime()
|
||||
);
|
||||
)
|
||||
|
||||
const workOrderId = result.lastInsertRowid as number;
|
||||
const workOrderId = result.lastInsertRowid as number
|
||||
|
||||
if (workOrderForm.lotOccupancyId) {
|
||||
addWorkOrderLotOccupancy(
|
||||
|
|
@ -67,12 +70,12 @@ export function addWorkOrder(
|
|||
},
|
||||
requestSession,
|
||||
database
|
||||
);
|
||||
)
|
||||
}
|
||||
|
||||
database.close();
|
||||
database.close()
|
||||
|
||||
return workOrderId;
|
||||
return workOrderId
|
||||
}
|
||||
|
||||
export default addWorkOrder;
|
||||
export default addWorkOrder
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes';
|
||||
interface AddWorkOrderCommentForm {
|
||||
workOrderId: string;
|
||||
workOrderComment: string;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import * as dateTimeFunctions from "@cityssm/expressjs-server-js/dateTimeFns.js";
|
||||
import sqlite from 'better-sqlite3';
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js';
|
||||
import * as dateTimeFunctions from '@cityssm/expressjs-server-js/dateTimeFns.js';
|
||||
export function addWorkOrderComment(workOrderCommentForm, requestSession) {
|
||||
const database = sqlite(databasePath);
|
||||
const rightNow = new Date();
|
||||
|
|
|
|||
|
|
@ -1,23 +1,23 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import sqlite from 'better-sqlite3'
|
||||
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'
|
||||
|
||||
import * as dateTimeFunctions from "@cityssm/expressjs-server-js/dateTimeFns.js";
|
||||
import * as dateTimeFunctions from '@cityssm/expressjs-server-js/dateTimeFns.js'
|
||||
|
||||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes'
|
||||
|
||||
interface AddWorkOrderCommentForm {
|
||||
workOrderId: string;
|
||||
workOrderComment: string;
|
||||
workOrderId: string
|
||||
workOrderComment: string
|
||||
}
|
||||
|
||||
export function addWorkOrderComment(
|
||||
workOrderCommentForm: AddWorkOrderCommentForm,
|
||||
requestSession: recordTypes.PartialSession
|
||||
): number {
|
||||
const database = sqlite(databasePath);
|
||||
const database = sqlite(databasePath)
|
||||
|
||||
const rightNow = new Date();
|
||||
const rightNow = new Date()
|
||||
|
||||
const result = database
|
||||
.prepare(
|
||||
|
|
@ -34,15 +34,15 @@ export function addWorkOrderComment(
|
|||
dateTimeFunctions.dateToInteger(rightNow),
|
||||
dateTimeFunctions.dateToTimeInteger(rightNow),
|
||||
workOrderCommentForm.workOrderComment,
|
||||
requestSession.user.userName,
|
||||
requestSession.user!.userName,
|
||||
rightNow.getTime(),
|
||||
requestSession.user.userName,
|
||||
requestSession.user!.userName,
|
||||
rightNow.getTime()
|
||||
);
|
||||
)
|
||||
|
||||
database.close();
|
||||
database.close()
|
||||
|
||||
return result.lastInsertRowid as number;
|
||||
return result.lastInsertRowid as number
|
||||
}
|
||||
|
||||
export default addWorkOrderComment;
|
||||
export default addWorkOrderComment
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes';
|
||||
interface AddWorkOrderLotForm {
|
||||
workOrderId: number | string;
|
||||
lotId: number | string;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import sqlite from 'better-sqlite3';
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js';
|
||||
export function addWorkOrderLot(workOrderLotForm, requestSession) {
|
||||
const database = sqlite(databasePath);
|
||||
const rightNowMillis = Date.now();
|
||||
|
|
|
|||
|
|
@ -1,21 +1,21 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import sqlite from 'better-sqlite3'
|
||||
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'
|
||||
|
||||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes'
|
||||
|
||||
interface AddWorkOrderLotForm {
|
||||
workOrderId: number | string;
|
||||
lotId: number | string;
|
||||
workOrderId: number | string
|
||||
lotId: number | string
|
||||
}
|
||||
|
||||
export function addWorkOrderLot(
|
||||
workOrderLotForm: AddWorkOrderLotForm,
|
||||
requestSession: recordTypes.PartialSession
|
||||
): boolean {
|
||||
const database = sqlite(databasePath);
|
||||
const database = sqlite(databasePath)
|
||||
|
||||
const rightNowMillis = Date.now();
|
||||
const rightNowMillis = Date.now()
|
||||
|
||||
const row: { recordDelete_timeMillis?: number } = database
|
||||
.prepare(
|
||||
|
|
@ -24,7 +24,7 @@ export function addWorkOrderLot(
|
|||
where workOrderId = ?
|
||||
and lotId = ?`
|
||||
)
|
||||
.get(workOrderLotForm.workOrderId, workOrderLotForm.lotId);
|
||||
.get(workOrderLotForm.workOrderId, workOrderLotForm.lotId)
|
||||
|
||||
if (row) {
|
||||
if (row.recordDelete_timeMillis) {
|
||||
|
|
@ -41,13 +41,13 @@ export function addWorkOrderLot(
|
|||
and lotId = ?`
|
||||
)
|
||||
.run(
|
||||
requestSession.user.userName,
|
||||
requestSession.user!.userName,
|
||||
rightNowMillis,
|
||||
requestSession.user.userName,
|
||||
requestSession.user!.userName,
|
||||
rightNowMillis,
|
||||
workOrderLotForm.workOrderId,
|
||||
workOrderLotForm.lotId
|
||||
);
|
||||
)
|
||||
}
|
||||
} else {
|
||||
database
|
||||
|
|
@ -61,16 +61,16 @@ export function addWorkOrderLot(
|
|||
.run(
|
||||
workOrderLotForm.workOrderId,
|
||||
workOrderLotForm.lotId,
|
||||
requestSession.user.userName,
|
||||
requestSession.user!.userName,
|
||||
rightNowMillis,
|
||||
requestSession.user.userName,
|
||||
requestSession.user!.userName,
|
||||
rightNowMillis
|
||||
);
|
||||
)
|
||||
}
|
||||
|
||||
database.close();
|
||||
database.close()
|
||||
|
||||
return true;
|
||||
return true
|
||||
}
|
||||
|
||||
export default addWorkOrderLot;
|
||||
export default addWorkOrderLot
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import sqlite from 'better-sqlite3';
|
||||
import type * as recordTypes from '../../types/recordTypes';
|
||||
interface AddWorkOrderLotOccupancyForm {
|
||||
workOrderId: number | string;
|
||||
lotOccupancyId: number | string;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import sqlite from 'better-sqlite3';
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js';
|
||||
export function addWorkOrderLotOccupancy(workOrderLotOccupancyForm, requestSession, connectedDatabase) {
|
||||
const database = connectedDatabase || sqlite(databasePath);
|
||||
const database = connectedDatabase ?? sqlite(databasePath);
|
||||
const rightNowMillis = Date.now();
|
||||
const row = database
|
||||
.prepare(`select recordDelete_timeMillis
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import sqlite from 'better-sqlite3'
|
||||
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'
|
||||
|
||||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes'
|
||||
|
||||
interface AddWorkOrderLotOccupancyForm {
|
||||
workOrderId: number | string;
|
||||
lotOccupancyId: number | string;
|
||||
workOrderId: number | string
|
||||
lotOccupancyId: number | string
|
||||
}
|
||||
|
||||
export function addWorkOrderLotOccupancy(
|
||||
|
|
@ -14,9 +14,9 @@ export function addWorkOrderLotOccupancy(
|
|||
requestSession: recordTypes.PartialSession,
|
||||
connectedDatabase?: sqlite.Database
|
||||
): boolean {
|
||||
const database = connectedDatabase || sqlite(databasePath);
|
||||
const database = connectedDatabase ?? sqlite(databasePath)
|
||||
|
||||
const rightNowMillis = Date.now();
|
||||
const rightNowMillis = Date.now()
|
||||
|
||||
const row: { recordDelete_timeMillis?: number } = database
|
||||
.prepare(
|
||||
|
|
@ -25,7 +25,10 @@ export function addWorkOrderLotOccupancy(
|
|||
where workOrderId = ?
|
||||
and lotOccupancyId = ?`
|
||||
)
|
||||
.get(workOrderLotOccupancyForm.workOrderId, workOrderLotOccupancyForm.lotOccupancyId);
|
||||
.get(
|
||||
workOrderLotOccupancyForm.workOrderId,
|
||||
workOrderLotOccupancyForm.lotOccupancyId
|
||||
)
|
||||
|
||||
if (row) {
|
||||
if (row.recordDelete_timeMillis) {
|
||||
|
|
@ -42,13 +45,13 @@ export function addWorkOrderLotOccupancy(
|
|||
and lotOccupancyId = ?`
|
||||
)
|
||||
.run(
|
||||
requestSession.user.userName,
|
||||
requestSession.user!.userName,
|
||||
rightNowMillis,
|
||||
requestSession.user.userName,
|
||||
requestSession.user!.userName,
|
||||
rightNowMillis,
|
||||
workOrderLotOccupancyForm.workOrderId,
|
||||
workOrderLotOccupancyForm.lotOccupancyId
|
||||
);
|
||||
)
|
||||
}
|
||||
} else {
|
||||
database
|
||||
|
|
@ -62,18 +65,18 @@ export function addWorkOrderLotOccupancy(
|
|||
.run(
|
||||
workOrderLotOccupancyForm.workOrderId,
|
||||
workOrderLotOccupancyForm.lotOccupancyId,
|
||||
requestSession.user.userName,
|
||||
requestSession.user!.userName,
|
||||
rightNowMillis,
|
||||
requestSession.user.userName,
|
||||
requestSession.user!.userName,
|
||||
rightNowMillis
|
||||
);
|
||||
)
|
||||
}
|
||||
|
||||
if (!connectedDatabase) {
|
||||
database.close();
|
||||
database.close()
|
||||
}
|
||||
|
||||
return true;
|
||||
return true
|
||||
}
|
||||
|
||||
export default addWorkOrderLotOccupancy;
|
||||
export default addWorkOrderLotOccupancy
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes';
|
||||
interface AddWorkOrderMilestoneForm {
|
||||
workOrderId: string | number;
|
||||
workOrderMilestoneTypeId?: number | string;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { dateStringToInteger, timeStringToInteger } from "@cityssm/expressjs-server-js/dateTimeFns.js";
|
||||
import sqlite from 'better-sqlite3';
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js';
|
||||
import { dateStringToInteger, timeStringToInteger } from '@cityssm/expressjs-server-js/dateTimeFns.js';
|
||||
export function addWorkOrderMilestone(milestoneForm, requestSession) {
|
||||
const rightNow = new Date();
|
||||
const database = sqlite(databasePath);
|
||||
|
|
@ -13,7 +13,7 @@ export function addWorkOrderMilestone(milestoneForm, requestSession) {
|
|||
recordCreate_userName, recordCreate_timeMillis,
|
||||
recordUpdate_userName, recordUpdate_timeMillis)
|
||||
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
|
||||
.run(milestoneForm.workOrderId, milestoneForm.workOrderMilestoneTypeId || undefined, dateStringToInteger(milestoneForm.workOrderMilestoneDateString), milestoneForm.workOrderMilestoneTimeString
|
||||
.run(milestoneForm.workOrderId, milestoneForm.workOrderMilestoneTypeId ?? undefined, dateStringToInteger(milestoneForm.workOrderMilestoneDateString), milestoneForm.workOrderMilestoneTimeString
|
||||
? timeStringToInteger(milestoneForm.workOrderMilestoneTimeString)
|
||||
: 0, milestoneForm.workOrderMilestoneDescription, milestoneForm.workOrderMilestoneCompletionDateString
|
||||
? dateStringToInteger(milestoneForm.workOrderMilestoneCompletionDateString)
|
||||
|
|
|
|||
|
|
@ -1,31 +1,33 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
/* eslint-disable @typescript-eslint/indent */
|
||||
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import sqlite from 'better-sqlite3'
|
||||
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'
|
||||
|
||||
import {
|
||||
dateStringToInteger,
|
||||
timeStringToInteger
|
||||
} from "@cityssm/expressjs-server-js/dateTimeFns.js";
|
||||
} from '@cityssm/expressjs-server-js/dateTimeFns.js'
|
||||
|
||||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes'
|
||||
|
||||
interface AddWorkOrderMilestoneForm {
|
||||
workOrderId: string | number;
|
||||
workOrderMilestoneTypeId?: number | string;
|
||||
workOrderMilestoneDateString: string;
|
||||
workOrderMilestoneTimeString?: string;
|
||||
workOrderMilestoneDescription: string;
|
||||
workOrderMilestoneCompletionDateString?: string;
|
||||
workOrderMilestoneCompletionTimeString?: string;
|
||||
workOrderId: string | number
|
||||
workOrderMilestoneTypeId?: number | string
|
||||
workOrderMilestoneDateString: string
|
||||
workOrderMilestoneTimeString?: string
|
||||
workOrderMilestoneDescription: string
|
||||
workOrderMilestoneCompletionDateString?: string
|
||||
workOrderMilestoneCompletionTimeString?: string
|
||||
}
|
||||
|
||||
export function addWorkOrderMilestone(
|
||||
milestoneForm: AddWorkOrderMilestoneForm,
|
||||
requestSession: recordTypes.PartialSession
|
||||
): number {
|
||||
const rightNow = new Date();
|
||||
const rightNow = new Date()
|
||||
|
||||
const database = sqlite(databasePath);
|
||||
const database = sqlite(databasePath)
|
||||
|
||||
const result = database
|
||||
.prepare(
|
||||
|
|
@ -40,27 +42,31 @@ export function addWorkOrderMilestone(
|
|||
)
|
||||
.run(
|
||||
milestoneForm.workOrderId,
|
||||
milestoneForm.workOrderMilestoneTypeId || undefined,
|
||||
milestoneForm.workOrderMilestoneTypeId ?? undefined,
|
||||
dateStringToInteger(milestoneForm.workOrderMilestoneDateString),
|
||||
milestoneForm.workOrderMilestoneTimeString
|
||||
? timeStringToInteger(milestoneForm.workOrderMilestoneTimeString)
|
||||
: 0,
|
||||
milestoneForm.workOrderMilestoneDescription,
|
||||
milestoneForm.workOrderMilestoneCompletionDateString
|
||||
? dateStringToInteger(milestoneForm.workOrderMilestoneCompletionDateString)
|
||||
? dateStringToInteger(
|
||||
milestoneForm.workOrderMilestoneCompletionDateString
|
||||
)
|
||||
: undefined,
|
||||
milestoneForm.workOrderMilestoneCompletionTimeString
|
||||
? timeStringToInteger(milestoneForm.workOrderMilestoneCompletionTimeString)
|
||||
? timeStringToInteger(
|
||||
milestoneForm.workOrderMilestoneCompletionTimeString
|
||||
)
|
||||
: undefined,
|
||||
requestSession.user.userName,
|
||||
requestSession.user!.userName,
|
||||
rightNow.getTime(),
|
||||
requestSession.user.userName,
|
||||
requestSession.user!.userName,
|
||||
rightNow.getTime()
|
||||
);
|
||||
)
|
||||
|
||||
database.close();
|
||||
database.close()
|
||||
|
||||
return result.lastInsertRowid as number;
|
||||
return result.lastInsertRowid as number
|
||||
}
|
||||
|
||||
export default addWorkOrderMilestone;
|
||||
export default addWorkOrderMilestone
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes';
|
||||
export declare function cleanupDatabase(requestSession: recordTypes.PartialSession): {
|
||||
inactivedRecordCount: number;
|
||||
purgedRecordCount: number;
|
||||
|
|
|
|||
|
|
@ -1,11 +1,13 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import * as configFunctions from "../functions.config.js";
|
||||
import sqlite from 'better-sqlite3';
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js';
|
||||
import * as configFunctions from '../functions.config.js';
|
||||
export function cleanupDatabase(requestSession) {
|
||||
const database = sqlite(databasePath);
|
||||
const rightNowMillis = Date.now();
|
||||
const recordDelete_timeMillisMin = rightNowMillis -
|
||||
configFunctions.getProperty("settings.adminCleanup.recordDeleteAgeDays") * 86400 * 1000;
|
||||
const recordDeleteTimeMillisMin = rightNowMillis -
|
||||
configFunctions.getProperty('settings.adminCleanup.recordDeleteAgeDays') *
|
||||
86400 *
|
||||
1000;
|
||||
let inactivedRecordCount = 0;
|
||||
let purgedRecordCount = 0;
|
||||
inactivedRecordCount += database
|
||||
|
|
@ -17,8 +19,8 @@ export function cleanupDatabase(requestSession) {
|
|||
select workOrderId from WorkOrders where recordDelete_timeMillis is not null)`)
|
||||
.run(requestSession.user.userName, rightNowMillis).changes;
|
||||
purgedRecordCount += database
|
||||
.prepare("delete from WorkOrderComments where recordDelete_timeMillis <= ?")
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.prepare('delete from WorkOrderComments where recordDelete_timeMillis <= ?')
|
||||
.run(recordDeleteTimeMillisMin).changes;
|
||||
inactivedRecordCount += database
|
||||
.prepare(`update WorkOrderLotOccupancies
|
||||
set recordDelete_userName = ?,
|
||||
|
|
@ -28,8 +30,8 @@ export function cleanupDatabase(requestSession) {
|
|||
select workOrderId from WorkOrders where recordDelete_timeMillis is not null)`)
|
||||
.run(requestSession.user.userName, rightNowMillis).changes;
|
||||
purgedRecordCount += database
|
||||
.prepare("delete from WorkOrderLotOccupancies where recordDelete_timeMillis <= ?")
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.prepare('delete from WorkOrderLotOccupancies where recordDelete_timeMillis <= ?')
|
||||
.run(recordDeleteTimeMillisMin).changes;
|
||||
inactivedRecordCount += database
|
||||
.prepare(`update WorkOrderLots
|
||||
set recordDelete_userName = ?,
|
||||
|
|
@ -39,8 +41,8 @@ export function cleanupDatabase(requestSession) {
|
|||
select workOrderId from WorkOrders where recordDelete_timeMillis is not null)`)
|
||||
.run(requestSession.user.userName, rightNowMillis).changes;
|
||||
purgedRecordCount += database
|
||||
.prepare("delete from WorkOrderLots where recordDelete_timeMillis <= ?")
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.prepare('delete from WorkOrderLots where recordDelete_timeMillis <= ?')
|
||||
.run(recordDeleteTimeMillisMin).changes;
|
||||
inactivedRecordCount += database
|
||||
.prepare(`update WorkOrderMilestones
|
||||
set recordDelete_userName = ?,
|
||||
|
|
@ -50,8 +52,8 @@ export function cleanupDatabase(requestSession) {
|
|||
select workOrderId from WorkOrders where recordDelete_timeMillis is not null)`)
|
||||
.run(requestSession.user.userName, rightNowMillis).changes;
|
||||
purgedRecordCount += database
|
||||
.prepare("delete from WorkOrderMilestones where recordDelete_timeMillis <= ?")
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.prepare('delete from WorkOrderMilestones where recordDelete_timeMillis <= ?')
|
||||
.run(recordDeleteTimeMillisMin).changes;
|
||||
purgedRecordCount += database
|
||||
.prepare(`delete from WorkOrders
|
||||
where recordDelete_timeMillis <= ?
|
||||
|
|
@ -59,18 +61,18 @@ export function cleanupDatabase(requestSession) {
|
|||
and workOrderId not in (select workOrderId from WorkOrderLotOccupancies)
|
||||
and workOrderId not in (select workOrderId from WorkOrderLots)
|
||||
and workOrderId not in (select workOrderId from WorkOrderMilestones)`)
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.run(recordDeleteTimeMillisMin).changes;
|
||||
purgedRecordCount += database
|
||||
.prepare(`delete from WorkOrderMilestoneTypes
|
||||
where recordDelete_timeMillis <= ?
|
||||
and workOrderMilestoneTypeId not in (
|
||||
select workOrderMilestoneTypeId from WorkOrderMilestones)`)
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.run(recordDeleteTimeMillisMin).changes;
|
||||
purgedRecordCount += database
|
||||
.prepare(`delete from WorkOrderTypes
|
||||
where recordDelete_timeMillis <= ?
|
||||
and workOrderTypeId not in (select workOrderTypeId from WorkOrders)`)
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.run(recordDeleteTimeMillisMin).changes;
|
||||
inactivedRecordCount += database
|
||||
.prepare(`update LotOccupancyComments
|
||||
set recordDelete_userName = ?,
|
||||
|
|
@ -80,8 +82,8 @@ export function cleanupDatabase(requestSession) {
|
|||
select lotOccupancyId from LotOccupancies where recordDelete_timeMillis is not null)`)
|
||||
.run(requestSession.user.userName, rightNowMillis).changes;
|
||||
purgedRecordCount += database
|
||||
.prepare("delete from LotOccupancyComments where recordDelete_timeMillis <= ?")
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.prepare('delete from LotOccupancyComments where recordDelete_timeMillis <= ?')
|
||||
.run(recordDeleteTimeMillisMin).changes;
|
||||
inactivedRecordCount += database
|
||||
.prepare(`update LotOccupancyFields
|
||||
set recordDelete_userName = ?,
|
||||
|
|
@ -90,8 +92,8 @@ export function cleanupDatabase(requestSession) {
|
|||
and lotOccupancyId in (select lotOccupancyId from LotOccupancies where recordDelete_timeMillis is not null)`)
|
||||
.run(requestSession.user.userName, rightNowMillis).changes;
|
||||
purgedRecordCount += database
|
||||
.prepare("delete from LotOccupancyFields where recordDelete_timeMillis <= ?")
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.prepare('delete from LotOccupancyFields where recordDelete_timeMillis <= ?')
|
||||
.run(recordDeleteTimeMillisMin).changes;
|
||||
inactivedRecordCount += database
|
||||
.prepare(`update LotOccupancyOccupants
|
||||
set recordDelete_userName = ?,
|
||||
|
|
@ -100,14 +102,14 @@ export function cleanupDatabase(requestSession) {
|
|||
and lotOccupancyId in (select lotOccupancyId from LotOccupancies where recordDelete_timeMillis is not null)`)
|
||||
.run(requestSession.user.userName, rightNowMillis).changes;
|
||||
purgedRecordCount += database
|
||||
.prepare("delete from LotOccupancyOccupants where recordDelete_timeMillis <= ?")
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.prepare('delete from LotOccupancyOccupants where recordDelete_timeMillis <= ?')
|
||||
.run(recordDeleteTimeMillisMin).changes;
|
||||
purgedRecordCount += database
|
||||
.prepare("delete from LotOccupancyFees where recordDelete_timeMillis <= ?")
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.prepare('delete from LotOccupancyFees where recordDelete_timeMillis <= ?')
|
||||
.run(recordDeleteTimeMillisMin).changes;
|
||||
purgedRecordCount += database
|
||||
.prepare("delete from LotOccupancyTransactions where recordDelete_timeMillis <= ?")
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.prepare('delete from LotOccupancyTransactions where recordDelete_timeMillis <= ?')
|
||||
.run(recordDeleteTimeMillisMin).changes;
|
||||
purgedRecordCount += database
|
||||
.prepare(`delete from LotOccupancies
|
||||
where recordDelete_timeMillis <= ?
|
||||
|
|
@ -117,7 +119,7 @@ export function cleanupDatabase(requestSession) {
|
|||
and lotOccupancyId not in (select lotOccupancyId from LotOccupancyOccupants)
|
||||
and lotOccupancyId not in (select lotOccupancyId from LotOccupancyTransactions)
|
||||
and lotOccupancyId not in (select lotOccupancyId from WorkOrderLotOccupancies)`)
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.run(recordDeleteTimeMillisMin).changes;
|
||||
inactivedRecordCount += database
|
||||
.prepare(`update Fees
|
||||
set recordDelete_userName = ?,
|
||||
|
|
@ -129,12 +131,12 @@ export function cleanupDatabase(requestSession) {
|
|||
.prepare(`delete from Fees
|
||||
where recordDelete_timeMillis <= ?
|
||||
and feeId not in (select feeId from LotOccupancyFees)`)
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.run(recordDeleteTimeMillisMin).changes;
|
||||
purgedRecordCount += database
|
||||
.prepare(`delete from FeeCategories
|
||||
where recordDelete_timeMillis <= ?
|
||||
and feeCategoryId not in (select feeCategoryId from Fees)`)
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.run(recordDeleteTimeMillisMin).changes;
|
||||
inactivedRecordCount += database
|
||||
.prepare(`update OccupancyTypeFields
|
||||
set recordDelete_userName = ?,
|
||||
|
|
@ -146,7 +148,7 @@ export function cleanupDatabase(requestSession) {
|
|||
.prepare(`delete from OccupancyTypeFields
|
||||
where recordDelete_timeMillis <= ?
|
||||
and occupancyTypeFieldId not in (select occupancyTypeFieldId from LotOccupancyFields)`)
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.run(recordDeleteTimeMillisMin).changes;
|
||||
inactivedRecordCount += database
|
||||
.prepare(`update OccupancyTypePrints
|
||||
set recordDelete_userName = ?,
|
||||
|
|
@ -155,8 +157,8 @@ export function cleanupDatabase(requestSession) {
|
|||
and occupancyTypeId in (select occupancyTypeId from OccupancyTypes where recordDelete_timeMillis is not null)`)
|
||||
.run(requestSession.user.userName, rightNowMillis).changes;
|
||||
purgedRecordCount += database
|
||||
.prepare("delete from OccupancyTypePrints where recordDelete_timeMillis <= ?")
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.prepare('delete from OccupancyTypePrints where recordDelete_timeMillis <= ?')
|
||||
.run(recordDeleteTimeMillisMin).changes;
|
||||
purgedRecordCount += database
|
||||
.prepare(`delete from OccupancyTypes
|
||||
where recordDelete_timeMillis <= ?
|
||||
|
|
@ -164,12 +166,12 @@ export function cleanupDatabase(requestSession) {
|
|||
and occupancyTypeId not in (select occupancyTypeId from OccupancyTypePrints)
|
||||
and occupancyTypeId not in (select occupancyTypeId from LotOccupancies)
|
||||
and occupancyTypeId not in (select occupancyTypeId from Fees)`)
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.run(recordDeleteTimeMillisMin).changes;
|
||||
purgedRecordCount += database
|
||||
.prepare(`delete from LotOccupantTypes
|
||||
where recordDelete_timeMillis <= ?
|
||||
and lotOccupantTypeId not in (select lotOccupantTypeId from LotOccupancyOccupants)`)
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.run(recordDeleteTimeMillisMin).changes;
|
||||
inactivedRecordCount += database
|
||||
.prepare(`update LotComments
|
||||
set recordDelete_userName = ?,
|
||||
|
|
@ -178,8 +180,8 @@ export function cleanupDatabase(requestSession) {
|
|||
and lotId in (select lotId from Lots where recordDelete_timeMillis is not null)`)
|
||||
.run(requestSession.user.userName, rightNowMillis).changes;
|
||||
purgedRecordCount += database
|
||||
.prepare("delete from LotComments where recordDelete_timeMillis <= ?")
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.prepare('delete from LotComments where recordDelete_timeMillis <= ?')
|
||||
.run(recordDeleteTimeMillisMin).changes;
|
||||
inactivedRecordCount += database
|
||||
.prepare(`update LotFields
|
||||
set recordDelete_userName = ?,
|
||||
|
|
@ -188,8 +190,8 @@ export function cleanupDatabase(requestSession) {
|
|||
and lotId in (select lotId from Lots where recordDelete_timeMillis is not null)`)
|
||||
.run(requestSession.user.userName, rightNowMillis).changes;
|
||||
purgedRecordCount += database
|
||||
.prepare("delete from LotFields where recordDelete_timeMillis <= ?")
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.prepare('delete from LotFields where recordDelete_timeMillis <= ?')
|
||||
.run(recordDeleteTimeMillisMin).changes;
|
||||
inactivedRecordCount += database
|
||||
.prepare(`update Lots
|
||||
set recordDelete_userName = ?,
|
||||
|
|
@ -204,12 +206,12 @@ export function cleanupDatabase(requestSession) {
|
|||
and lotId not in (select lotId from LotFields)
|
||||
and lotId not in (select lotId from LotOccupancies)
|
||||
and lotId not in (select lotId from WorkOrderLots)`)
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.run(recordDeleteTimeMillisMin).changes;
|
||||
purgedRecordCount += database
|
||||
.prepare(`delete from LotStatuses
|
||||
where recordDelete_timeMillis <= ?
|
||||
and lotStatusId not in (select lotStatusId from Lots)`)
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.run(recordDeleteTimeMillisMin).changes;
|
||||
inactivedRecordCount += database
|
||||
.prepare(`update LotTypeFields
|
||||
set recordDelete_userName = ?,
|
||||
|
|
@ -221,12 +223,12 @@ export function cleanupDatabase(requestSession) {
|
|||
.prepare(`delete from LotTypeFields
|
||||
where recordDelete_timeMillis <= ?
|
||||
and lotTypeFieldId not in (select lotTypeFieldId from LotFields)`)
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.run(recordDeleteTimeMillisMin).changes;
|
||||
purgedRecordCount += database
|
||||
.prepare(`delete from LotTypes
|
||||
where recordDelete_timeMillis <= ?
|
||||
and lotTypeId not in (select lotTypeId from Lots)`)
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.run(recordDeleteTimeMillisMin).changes;
|
||||
database.close();
|
||||
return {
|
||||
inactivedRecordCount,
|
||||
|
|
|
|||
|
|
@ -1,21 +1,26 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import sqlite from 'better-sqlite3'
|
||||
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'
|
||||
|
||||
import * as configFunctions from "../functions.config.js";
|
||||
import * as configFunctions from '../functions.config.js'
|
||||
|
||||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes'
|
||||
|
||||
export function cleanupDatabase(requestSession: recordTypes.PartialSession) {
|
||||
const database = sqlite(databasePath);
|
||||
export function cleanupDatabase(requestSession: recordTypes.PartialSession): {
|
||||
inactivedRecordCount: number
|
||||
purgedRecordCount: number
|
||||
} {
|
||||
const database = sqlite(databasePath)
|
||||
|
||||
const rightNowMillis = Date.now();
|
||||
const recordDelete_timeMillisMin =
|
||||
const rightNowMillis = Date.now()
|
||||
const recordDeleteTimeMillisMin =
|
||||
rightNowMillis -
|
||||
configFunctions.getProperty("settings.adminCleanup.recordDeleteAgeDays") * 86_400 * 1000;
|
||||
configFunctions.getProperty('settings.adminCleanup.recordDeleteAgeDays') *
|
||||
86_400 *
|
||||
1000
|
||||
|
||||
let inactivedRecordCount = 0;
|
||||
let purgedRecordCount = 0;
|
||||
let inactivedRecordCount = 0
|
||||
let purgedRecordCount = 0
|
||||
|
||||
/*
|
||||
* Work Order Comments
|
||||
|
|
@ -30,11 +35,11 @@ export function cleanupDatabase(requestSession: recordTypes.PartialSession) {
|
|||
and workOrderId in (
|
||||
select workOrderId from WorkOrders where recordDelete_timeMillis is not null)`
|
||||
)
|
||||
.run(requestSession.user.userName, rightNowMillis).changes;
|
||||
.run(requestSession.user!.userName, rightNowMillis).changes
|
||||
|
||||
purgedRecordCount += database
|
||||
.prepare("delete from WorkOrderComments where recordDelete_timeMillis <= ?")
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.prepare('delete from WorkOrderComments where recordDelete_timeMillis <= ?')
|
||||
.run(recordDeleteTimeMillisMin).changes
|
||||
|
||||
/*
|
||||
* Work Order Lot Occupancies
|
||||
|
|
@ -49,11 +54,13 @@ export function cleanupDatabase(requestSession: recordTypes.PartialSession) {
|
|||
and workOrderId in (
|
||||
select workOrderId from WorkOrders where recordDelete_timeMillis is not null)`
|
||||
)
|
||||
.run(requestSession.user.userName, rightNowMillis).changes;
|
||||
.run(requestSession.user!.userName, rightNowMillis).changes
|
||||
|
||||
purgedRecordCount += database
|
||||
.prepare("delete from WorkOrderLotOccupancies where recordDelete_timeMillis <= ?")
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.prepare(
|
||||
'delete from WorkOrderLotOccupancies where recordDelete_timeMillis <= ?'
|
||||
)
|
||||
.run(recordDeleteTimeMillisMin).changes
|
||||
|
||||
/*
|
||||
* Work Order Lots
|
||||
|
|
@ -68,11 +75,11 @@ export function cleanupDatabase(requestSession: recordTypes.PartialSession) {
|
|||
and workOrderId in (
|
||||
select workOrderId from WorkOrders where recordDelete_timeMillis is not null)`
|
||||
)
|
||||
.run(requestSession.user.userName, rightNowMillis).changes;
|
||||
.run(requestSession.user!.userName, rightNowMillis).changes
|
||||
|
||||
purgedRecordCount += database
|
||||
.prepare("delete from WorkOrderLots where recordDelete_timeMillis <= ?")
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.prepare('delete from WorkOrderLots where recordDelete_timeMillis <= ?')
|
||||
.run(recordDeleteTimeMillisMin).changes
|
||||
|
||||
/*
|
||||
* Work Order Milestones
|
||||
|
|
@ -87,11 +94,13 @@ export function cleanupDatabase(requestSession: recordTypes.PartialSession) {
|
|||
and workOrderId in (
|
||||
select workOrderId from WorkOrders where recordDelete_timeMillis is not null)`
|
||||
)
|
||||
.run(requestSession.user.userName, rightNowMillis).changes;
|
||||
.run(requestSession.user!.userName, rightNowMillis).changes
|
||||
|
||||
purgedRecordCount += database
|
||||
.prepare("delete from WorkOrderMilestones where recordDelete_timeMillis <= ?")
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.prepare(
|
||||
'delete from WorkOrderMilestones where recordDelete_timeMillis <= ?'
|
||||
)
|
||||
.run(recordDeleteTimeMillisMin).changes
|
||||
|
||||
/*
|
||||
* Work Orders
|
||||
|
|
@ -106,7 +115,7 @@ export function cleanupDatabase(requestSession: recordTypes.PartialSession) {
|
|||
and workOrderId not in (select workOrderId from WorkOrderLots)
|
||||
and workOrderId not in (select workOrderId from WorkOrderMilestones)`
|
||||
)
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.run(recordDeleteTimeMillisMin).changes
|
||||
|
||||
/*
|
||||
* Work Order Milestone Types
|
||||
|
|
@ -119,7 +128,7 @@ export function cleanupDatabase(requestSession: recordTypes.PartialSession) {
|
|||
and workOrderMilestoneTypeId not in (
|
||||
select workOrderMilestoneTypeId from WorkOrderMilestones)`
|
||||
)
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.run(recordDeleteTimeMillisMin).changes
|
||||
|
||||
/*
|
||||
* Work Order Types
|
||||
|
|
@ -131,7 +140,7 @@ export function cleanupDatabase(requestSession: recordTypes.PartialSession) {
|
|||
where recordDelete_timeMillis <= ?
|
||||
and workOrderTypeId not in (select workOrderTypeId from WorkOrders)`
|
||||
)
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.run(recordDeleteTimeMillisMin).changes
|
||||
|
||||
/*
|
||||
* Lot Occupancy Comments
|
||||
|
|
@ -146,11 +155,13 @@ export function cleanupDatabase(requestSession: recordTypes.PartialSession) {
|
|||
and lotOccupancyId in (
|
||||
select lotOccupancyId from LotOccupancies where recordDelete_timeMillis is not null)`
|
||||
)
|
||||
.run(requestSession.user.userName, rightNowMillis).changes;
|
||||
.run(requestSession.user!.userName, rightNowMillis).changes
|
||||
|
||||
purgedRecordCount += database
|
||||
.prepare("delete from LotOccupancyComments where recordDelete_timeMillis <= ?")
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.prepare(
|
||||
'delete from LotOccupancyComments where recordDelete_timeMillis <= ?'
|
||||
)
|
||||
.run(recordDeleteTimeMillisMin).changes
|
||||
|
||||
/*
|
||||
* Lot Occupancy Fields
|
||||
|
|
@ -164,11 +175,13 @@ export function cleanupDatabase(requestSession: recordTypes.PartialSession) {
|
|||
where recordDelete_timeMillis is null
|
||||
and lotOccupancyId in (select lotOccupancyId from LotOccupancies where recordDelete_timeMillis is not null)`
|
||||
)
|
||||
.run(requestSession.user.userName, rightNowMillis).changes;
|
||||
.run(requestSession.user!.userName, rightNowMillis).changes
|
||||
|
||||
purgedRecordCount += database
|
||||
.prepare("delete from LotOccupancyFields where recordDelete_timeMillis <= ?")
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.prepare(
|
||||
'delete from LotOccupancyFields where recordDelete_timeMillis <= ?'
|
||||
)
|
||||
.run(recordDeleteTimeMillisMin).changes
|
||||
|
||||
/*
|
||||
* Lot Occupancy Occupants
|
||||
|
|
@ -182,11 +195,13 @@ export function cleanupDatabase(requestSession: recordTypes.PartialSession) {
|
|||
where recordDelete_timeMillis is null
|
||||
and lotOccupancyId in (select lotOccupancyId from LotOccupancies where recordDelete_timeMillis is not null)`
|
||||
)
|
||||
.run(requestSession.user.userName, rightNowMillis).changes;
|
||||
.run(requestSession.user!.userName, rightNowMillis).changes
|
||||
|
||||
purgedRecordCount += database
|
||||
.prepare("delete from LotOccupancyOccupants where recordDelete_timeMillis <= ?")
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.prepare(
|
||||
'delete from LotOccupancyOccupants where recordDelete_timeMillis <= ?'
|
||||
)
|
||||
.run(recordDeleteTimeMillisMin).changes
|
||||
|
||||
/*
|
||||
* Lot Occupancy Fees/Transactions
|
||||
|
|
@ -194,12 +209,14 @@ export function cleanupDatabase(requestSession: recordTypes.PartialSession) {
|
|||
*/
|
||||
|
||||
purgedRecordCount += database
|
||||
.prepare("delete from LotOccupancyFees where recordDelete_timeMillis <= ?")
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.prepare('delete from LotOccupancyFees where recordDelete_timeMillis <= ?')
|
||||
.run(recordDeleteTimeMillisMin).changes
|
||||
|
||||
purgedRecordCount += database
|
||||
.prepare("delete from LotOccupancyTransactions where recordDelete_timeMillis <= ?")
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.prepare(
|
||||
'delete from LotOccupancyTransactions where recordDelete_timeMillis <= ?'
|
||||
)
|
||||
.run(recordDeleteTimeMillisMin).changes
|
||||
|
||||
/*
|
||||
* Lot Occupancies
|
||||
|
|
@ -216,7 +233,7 @@ export function cleanupDatabase(requestSession: recordTypes.PartialSession) {
|
|||
and lotOccupancyId not in (select lotOccupancyId from LotOccupancyTransactions)
|
||||
and lotOccupancyId not in (select lotOccupancyId from WorkOrderLotOccupancies)`
|
||||
)
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.run(recordDeleteTimeMillisMin).changes
|
||||
|
||||
/*
|
||||
* Fees
|
||||
|
|
@ -230,7 +247,7 @@ export function cleanupDatabase(requestSession: recordTypes.PartialSession) {
|
|||
where recordDelete_timeMillis is null
|
||||
and feeCategoryId in (select feeCategoryId from FeeCategories where recordDelete_timeMillis is not null)`
|
||||
)
|
||||
.run(requestSession.user.userName, rightNowMillis).changes;
|
||||
.run(requestSession.user!.userName, rightNowMillis).changes
|
||||
|
||||
purgedRecordCount += database
|
||||
.prepare(
|
||||
|
|
@ -238,7 +255,7 @@ export function cleanupDatabase(requestSession: recordTypes.PartialSession) {
|
|||
where recordDelete_timeMillis <= ?
|
||||
and feeId not in (select feeId from LotOccupancyFees)`
|
||||
)
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.run(recordDeleteTimeMillisMin).changes
|
||||
|
||||
/*
|
||||
* Fee Categories
|
||||
|
|
@ -250,7 +267,7 @@ export function cleanupDatabase(requestSession: recordTypes.PartialSession) {
|
|||
where recordDelete_timeMillis <= ?
|
||||
and feeCategoryId not in (select feeCategoryId from Fees)`
|
||||
)
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.run(recordDeleteTimeMillisMin).changes
|
||||
|
||||
/*
|
||||
* Occupancy Type Fields
|
||||
|
|
@ -264,7 +281,7 @@ export function cleanupDatabase(requestSession: recordTypes.PartialSession) {
|
|||
where recordDelete_timeMillis is null
|
||||
and occupancyTypeId in (select occupancyTypeId from OccupancyTypes where recordDelete_timeMillis is not null)`
|
||||
)
|
||||
.run(requestSession.user.userName, rightNowMillis).changes;
|
||||
.run(requestSession.user!.userName, rightNowMillis).changes
|
||||
|
||||
purgedRecordCount += database
|
||||
.prepare(
|
||||
|
|
@ -272,7 +289,7 @@ export function cleanupDatabase(requestSession: recordTypes.PartialSession) {
|
|||
where recordDelete_timeMillis <= ?
|
||||
and occupancyTypeFieldId not in (select occupancyTypeFieldId from LotOccupancyFields)`
|
||||
)
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.run(recordDeleteTimeMillisMin).changes
|
||||
|
||||
/*
|
||||
* Occupancy Type Prints
|
||||
|
|
@ -286,11 +303,13 @@ export function cleanupDatabase(requestSession: recordTypes.PartialSession) {
|
|||
where recordDelete_timeMillis is null
|
||||
and occupancyTypeId in (select occupancyTypeId from OccupancyTypes where recordDelete_timeMillis is not null)`
|
||||
)
|
||||
.run(requestSession.user.userName, rightNowMillis).changes;
|
||||
.run(requestSession.user!.userName, rightNowMillis).changes
|
||||
|
||||
purgedRecordCount += database
|
||||
.prepare("delete from OccupancyTypePrints where recordDelete_timeMillis <= ?")
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.prepare(
|
||||
'delete from OccupancyTypePrints where recordDelete_timeMillis <= ?'
|
||||
)
|
||||
.run(recordDeleteTimeMillisMin).changes
|
||||
|
||||
/*
|
||||
* Occupancy Types
|
||||
|
|
@ -305,7 +324,7 @@ export function cleanupDatabase(requestSession: recordTypes.PartialSession) {
|
|||
and occupancyTypeId not in (select occupancyTypeId from LotOccupancies)
|
||||
and occupancyTypeId not in (select occupancyTypeId from Fees)`
|
||||
)
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.run(recordDeleteTimeMillisMin).changes
|
||||
|
||||
/*
|
||||
* Lot Occupant Types
|
||||
|
|
@ -317,7 +336,7 @@ export function cleanupDatabase(requestSession: recordTypes.PartialSession) {
|
|||
where recordDelete_timeMillis <= ?
|
||||
and lotOccupantTypeId not in (select lotOccupantTypeId from LotOccupancyOccupants)`
|
||||
)
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.run(recordDeleteTimeMillisMin).changes
|
||||
|
||||
/*
|
||||
* Lot Comments
|
||||
|
|
@ -331,11 +350,11 @@ export function cleanupDatabase(requestSession: recordTypes.PartialSession) {
|
|||
where recordDelete_timeMillis is null
|
||||
and lotId in (select lotId from Lots where recordDelete_timeMillis is not null)`
|
||||
)
|
||||
.run(requestSession.user.userName, rightNowMillis).changes;
|
||||
.run(requestSession.user!.userName, rightNowMillis).changes
|
||||
|
||||
purgedRecordCount += database
|
||||
.prepare("delete from LotComments where recordDelete_timeMillis <= ?")
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.prepare('delete from LotComments where recordDelete_timeMillis <= ?')
|
||||
.run(recordDeleteTimeMillisMin).changes
|
||||
|
||||
/*
|
||||
* Lot Fields
|
||||
|
|
@ -349,11 +368,11 @@ export function cleanupDatabase(requestSession: recordTypes.PartialSession) {
|
|||
where recordDelete_timeMillis is null
|
||||
and lotId in (select lotId from Lots where recordDelete_timeMillis is not null)`
|
||||
)
|
||||
.run(requestSession.user.userName, rightNowMillis).changes;
|
||||
.run(requestSession.user!.userName, rightNowMillis).changes
|
||||
|
||||
purgedRecordCount += database
|
||||
.prepare("delete from LotFields where recordDelete_timeMillis <= ?")
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.prepare('delete from LotFields where recordDelete_timeMillis <= ?')
|
||||
.run(recordDeleteTimeMillisMin).changes
|
||||
|
||||
/*
|
||||
* Lots
|
||||
|
|
@ -367,7 +386,7 @@ export function cleanupDatabase(requestSession: recordTypes.PartialSession) {
|
|||
where recordDelete_timeMillis is null
|
||||
and mapId in (select mapId from Maps where recordDelete_timeMillis is not null)`
|
||||
)
|
||||
.run(requestSession.user.userName, rightNowMillis).changes;
|
||||
.run(requestSession.user!.userName, rightNowMillis).changes
|
||||
|
||||
purgedRecordCount += database
|
||||
.prepare(
|
||||
|
|
@ -378,7 +397,7 @@ export function cleanupDatabase(requestSession: recordTypes.PartialSession) {
|
|||
and lotId not in (select lotId from LotOccupancies)
|
||||
and lotId not in (select lotId from WorkOrderLots)`
|
||||
)
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.run(recordDeleteTimeMillisMin).changes
|
||||
|
||||
/*
|
||||
* Lot Statuses
|
||||
|
|
@ -390,7 +409,7 @@ export function cleanupDatabase(requestSession: recordTypes.PartialSession) {
|
|||
where recordDelete_timeMillis <= ?
|
||||
and lotStatusId not in (select lotStatusId from Lots)`
|
||||
)
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.run(recordDeleteTimeMillisMin).changes
|
||||
|
||||
/*
|
||||
* Lot Type Fields
|
||||
|
|
@ -404,7 +423,7 @@ export function cleanupDatabase(requestSession: recordTypes.PartialSession) {
|
|||
where recordDelete_timeMillis is null
|
||||
and lotTypeId in (select lotTypeId from LotTypes where recordDelete_timeMillis is not null)`
|
||||
)
|
||||
.run(requestSession.user.userName, rightNowMillis).changes;
|
||||
.run(requestSession.user!.userName, rightNowMillis).changes
|
||||
|
||||
purgedRecordCount += database
|
||||
.prepare(
|
||||
|
|
@ -412,7 +431,7 @@ export function cleanupDatabase(requestSession: recordTypes.PartialSession) {
|
|||
where recordDelete_timeMillis <= ?
|
||||
and lotTypeFieldId not in (select lotTypeFieldId from LotFields)`
|
||||
)
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.run(recordDeleteTimeMillisMin).changes
|
||||
|
||||
/*
|
||||
* Lot Types
|
||||
|
|
@ -424,14 +443,14 @@ export function cleanupDatabase(requestSession: recordTypes.PartialSession) {
|
|||
where recordDelete_timeMillis <= ?
|
||||
and lotTypeId not in (select lotTypeId from Lots)`
|
||||
)
|
||||
.run(recordDelete_timeMillisMin).changes;
|
||||
.run(recordDeleteTimeMillisMin).changes
|
||||
|
||||
database.close();
|
||||
database.close()
|
||||
|
||||
return {
|
||||
inactivedRecordCount,
|
||||
purgedRecordCount
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
export default cleanupDatabase;
|
||||
export default cleanupDatabase
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes';
|
||||
interface AddWorkOrderForm {
|
||||
workOrderId: number | string;
|
||||
workOrderCloseDateString?: string;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { dateStringToInteger, dateToInteger } from "@cityssm/expressjs-server-js/dateTimeFns.js";
|
||||
import sqlite from 'better-sqlite3';
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js';
|
||||
import { dateStringToInteger, dateToInteger } from '@cityssm/expressjs-server-js/dateTimeFns.js';
|
||||
export function closeWorkOrder(workOrderForm, requestSession) {
|
||||
const database = sqlite(databasePath);
|
||||
const rightNow = new Date();
|
||||
|
|
|
|||
|
|
@ -1,23 +1,26 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import sqlite from 'better-sqlite3'
|
||||
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'
|
||||
|
||||
import { dateStringToInteger, dateToInteger } from "@cityssm/expressjs-server-js/dateTimeFns.js";
|
||||
import {
|
||||
dateStringToInteger,
|
||||
dateToInteger
|
||||
} from '@cityssm/expressjs-server-js/dateTimeFns.js'
|
||||
|
||||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes'
|
||||
|
||||
interface AddWorkOrderForm {
|
||||
workOrderId: number | string;
|
||||
workOrderCloseDateString?: string;
|
||||
workOrderId: number | string
|
||||
workOrderCloseDateString?: string
|
||||
}
|
||||
|
||||
export function closeWorkOrder(
|
||||
workOrderForm: AddWorkOrderForm,
|
||||
requestSession: recordTypes.PartialSession
|
||||
): boolean {
|
||||
const database = sqlite(databasePath);
|
||||
const database = sqlite(databasePath)
|
||||
|
||||
const rightNow = new Date();
|
||||
const rightNow = new Date()
|
||||
|
||||
const result = database
|
||||
.prepare(
|
||||
|
|
@ -31,14 +34,14 @@ export function closeWorkOrder(
|
|||
workOrderForm.workOrderCloseDateString
|
||||
? dateStringToInteger(workOrderForm.workOrderCloseDateString)
|
||||
: dateToInteger(new Date()),
|
||||
requestSession.user.userName,
|
||||
requestSession.user!.userName,
|
||||
rightNow.getTime(),
|
||||
workOrderForm.workOrderId
|
||||
);
|
||||
)
|
||||
|
||||
database.close();
|
||||
database.close()
|
||||
|
||||
return result.changes > 0;
|
||||
return result.changes > 0
|
||||
}
|
||||
|
||||
export default closeWorkOrder;
|
||||
export default closeWorkOrder
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes';
|
||||
interface CompleteWorkOrderMilestoneForm {
|
||||
workOrderMilestoneId: string | number;
|
||||
workOrderMilestoneCompletionDateString?: string;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { dateStringToInteger, dateToInteger, dateToTimeInteger, timeStringToInteger } from "@cityssm/expressjs-server-js/dateTimeFns.js";
|
||||
import sqlite from 'better-sqlite3';
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js';
|
||||
import { dateStringToInteger, dateToInteger, dateToTimeInteger, timeStringToInteger } from '@cityssm/expressjs-server-js/dateTimeFns.js';
|
||||
export function completeWorkOrderMilestone(milestoneForm, requestSession) {
|
||||
const rightNow = new Date();
|
||||
const database = sqlite(databasePath);
|
||||
|
|
|
|||
|
|
@ -1,29 +1,31 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
/* eslint-disable @typescript-eslint/indent */
|
||||
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import sqlite from 'better-sqlite3'
|
||||
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'
|
||||
|
||||
import {
|
||||
dateStringToInteger,
|
||||
dateToInteger,
|
||||
dateToTimeInteger,
|
||||
timeStringToInteger
|
||||
} from "@cityssm/expressjs-server-js/dateTimeFns.js";
|
||||
} from '@cityssm/expressjs-server-js/dateTimeFns.js'
|
||||
|
||||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes'
|
||||
|
||||
interface CompleteWorkOrderMilestoneForm {
|
||||
workOrderMilestoneId: string | number;
|
||||
workOrderMilestoneCompletionDateString?: string;
|
||||
workOrderMilestoneCompletionTimeString?: string;
|
||||
workOrderMilestoneId: string | number
|
||||
workOrderMilestoneCompletionDateString?: string
|
||||
workOrderMilestoneCompletionTimeString?: string
|
||||
}
|
||||
|
||||
export function completeWorkOrderMilestone(
|
||||
milestoneForm: CompleteWorkOrderMilestoneForm,
|
||||
requestSession: recordTypes.PartialSession
|
||||
): boolean {
|
||||
const rightNow = new Date();
|
||||
const rightNow = new Date()
|
||||
|
||||
const database = sqlite(databasePath);
|
||||
const database = sqlite(databasePath)
|
||||
|
||||
const result = database
|
||||
.prepare(
|
||||
|
|
@ -36,19 +38,23 @@ export function completeWorkOrderMilestone(
|
|||
)
|
||||
.run(
|
||||
milestoneForm.workOrderMilestoneCompletionDateString
|
||||
? dateStringToInteger(milestoneForm.workOrderMilestoneCompletionDateString)
|
||||
? dateStringToInteger(
|
||||
milestoneForm.workOrderMilestoneCompletionDateString
|
||||
)
|
||||
: dateToInteger(rightNow),
|
||||
milestoneForm.workOrderMilestoneCompletionTimeString
|
||||
? timeStringToInteger(milestoneForm.workOrderMilestoneCompletionTimeString)
|
||||
? timeStringToInteger(
|
||||
milestoneForm.workOrderMilestoneCompletionTimeString
|
||||
)
|
||||
: dateToTimeInteger(rightNow),
|
||||
requestSession.user.userName,
|
||||
requestSession.user!.userName,
|
||||
rightNow.getTime(),
|
||||
milestoneForm.workOrderMilestoneId
|
||||
);
|
||||
)
|
||||
|
||||
database.close();
|
||||
database.close()
|
||||
|
||||
return result.changes > 0;
|
||||
return result.changes > 0
|
||||
}
|
||||
|
||||
export default completeWorkOrderMilestone;
|
||||
export default completeWorkOrderMilestone
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes';
|
||||
export declare function copyLotOccupancy(oldLotOccupancyId: number | string, requestSession: recordTypes.PartialSession): number;
|
||||
export default copyLotOccupancy;
|
||||
|
|
|
|||
|
|
@ -1,20 +1,20 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { getLotOccupancy } from "./getLotOccupancy.js";
|
||||
import { addLotOccupancy } from "./addLotOccupancy.js";
|
||||
import { addLotOccupancyOccupant } from "./addLotOccupancyOccupant.js";
|
||||
import { dateToString } from "@cityssm/expressjs-server-js/dateTimeFns.js";
|
||||
import sqlite from 'better-sqlite3';
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js';
|
||||
import { getLotOccupancy } from './getLotOccupancy.js';
|
||||
import { addLotOccupancy } from './addLotOccupancy.js';
|
||||
import { addLotOccupancyOccupant } from './addLotOccupancyOccupant.js';
|
||||
import { dateToString } from '@cityssm/expressjs-server-js/dateTimeFns.js';
|
||||
export function copyLotOccupancy(oldLotOccupancyId, requestSession) {
|
||||
const database = sqlite(databasePath);
|
||||
const oldLotOccupancy = getLotOccupancy(oldLotOccupancyId, database);
|
||||
const newLotOccupancyId = addLotOccupancy({
|
||||
lotId: oldLotOccupancy.lotId || "",
|
||||
lotId: oldLotOccupancy.lotId ?? '',
|
||||
occupancyTypeId: oldLotOccupancy.occupancyTypeId,
|
||||
occupancyStartDateString: dateToString(new Date()),
|
||||
occupancyEndDateString: ""
|
||||
occupancyEndDateString: ''
|
||||
}, requestSession, database);
|
||||
const rightNowMillis = Date.now();
|
||||
for (const occupancyField of oldLotOccupancy.lotOccupancyFields) {
|
||||
for (const occupancyField of oldLotOccupancy.lotOccupancyFields ?? []) {
|
||||
database
|
||||
.prepare(`insert into LotOccupancyFields (
|
||||
lotOccupancyId, occupancyTypeFieldId, lotOccupancyFieldValue,
|
||||
|
|
@ -23,7 +23,7 @@ export function copyLotOccupancy(oldLotOccupancyId, requestSession) {
|
|||
values (?, ?, ?, ?, ?, ?, ?)`)
|
||||
.run(newLotOccupancyId, occupancyField.occupancyTypeFieldId, occupancyField.lotOccupancyFieldValue, requestSession.user.userName, rightNowMillis, requestSession.user.userName, rightNowMillis);
|
||||
}
|
||||
for (const occupant of oldLotOccupancy.lotOccupancyOccupants) {
|
||||
for (const occupant of oldLotOccupancy.lotOccupancyOccupants ?? []) {
|
||||
addLotOccupancyOccupant({
|
||||
lotOccupancyId: newLotOccupancyId,
|
||||
lotOccupantTypeId: occupant.lotOccupantTypeId,
|
||||
|
|
|
|||
|
|
@ -1,41 +1,41 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import sqlite from 'better-sqlite3'
|
||||
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'
|
||||
|
||||
import { getLotOccupancy } from "./getLotOccupancy.js";
|
||||
import { addLotOccupancy } from "./addLotOccupancy.js";
|
||||
import { addLotOccupancyOccupant } from "./addLotOccupancyOccupant.js";
|
||||
import { getLotOccupancy } from './getLotOccupancy.js'
|
||||
import { addLotOccupancy } from './addLotOccupancy.js'
|
||||
import { addLotOccupancyOccupant } from './addLotOccupancyOccupant.js'
|
||||
|
||||
import { dateToString } from "@cityssm/expressjs-server-js/dateTimeFns.js";
|
||||
import { dateToString } from '@cityssm/expressjs-server-js/dateTimeFns.js'
|
||||
|
||||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes'
|
||||
|
||||
export function copyLotOccupancy(
|
||||
oldLotOccupancyId: number | string,
|
||||
requestSession: recordTypes.PartialSession
|
||||
): number {
|
||||
const database = sqlite(databasePath);
|
||||
const database = sqlite(databasePath)
|
||||
|
||||
const oldLotOccupancy = getLotOccupancy(oldLotOccupancyId, database);
|
||||
const oldLotOccupancy = getLotOccupancy(oldLotOccupancyId, database)!
|
||||
|
||||
const newLotOccupancyId = addLotOccupancy(
|
||||
{
|
||||
lotId: oldLotOccupancy.lotId || "",
|
||||
occupancyTypeId: oldLotOccupancy.occupancyTypeId,
|
||||
lotId: oldLotOccupancy.lotId ?? '',
|
||||
occupancyTypeId: oldLotOccupancy.occupancyTypeId!,
|
||||
occupancyStartDateString: dateToString(new Date()),
|
||||
occupancyEndDateString: ""
|
||||
occupancyEndDateString: ''
|
||||
},
|
||||
requestSession,
|
||||
database
|
||||
);
|
||||
)
|
||||
|
||||
/*
|
||||
* Copy Fields
|
||||
*/
|
||||
|
||||
const rightNowMillis = Date.now();
|
||||
const rightNowMillis = Date.now()
|
||||
|
||||
for (const occupancyField of oldLotOccupancy.lotOccupancyFields) {
|
||||
for (const occupancyField of oldLotOccupancy.lotOccupancyFields ?? []) {
|
||||
database
|
||||
.prepare(
|
||||
`insert into LotOccupancyFields (
|
||||
|
|
@ -48,39 +48,39 @@ export function copyLotOccupancy(
|
|||
newLotOccupancyId,
|
||||
occupancyField.occupancyTypeFieldId,
|
||||
occupancyField.lotOccupancyFieldValue,
|
||||
requestSession.user.userName,
|
||||
requestSession.user!.userName,
|
||||
rightNowMillis,
|
||||
requestSession.user.userName,
|
||||
requestSession.user!.userName,
|
||||
rightNowMillis
|
||||
);
|
||||
)
|
||||
}
|
||||
|
||||
/*
|
||||
* Copy Occupants
|
||||
*/
|
||||
|
||||
for (const occupant of oldLotOccupancy.lotOccupancyOccupants) {
|
||||
for (const occupant of oldLotOccupancy.lotOccupancyOccupants ?? []) {
|
||||
addLotOccupancyOccupant(
|
||||
{
|
||||
lotOccupancyId: newLotOccupancyId,
|
||||
lotOccupantTypeId: occupant.lotOccupantTypeId,
|
||||
occupantName: occupant.occupantName,
|
||||
occupantAddress1: occupant.occupantAddress1,
|
||||
occupantAddress2: occupant.occupantAddress2,
|
||||
occupantCity: occupant.occupantCity,
|
||||
occupantProvince: occupant.occupantProvince,
|
||||
occupantPostalCode: occupant.occupantPostalCode,
|
||||
occupantPhoneNumber: occupant.occupantPhoneNumber,
|
||||
occupantEmailAddress: occupant.occupantEmailAddress
|
||||
lotOccupantTypeId: occupant.lotOccupantTypeId!,
|
||||
occupantName: occupant.occupantName!,
|
||||
occupantAddress1: occupant.occupantAddress1!,
|
||||
occupantAddress2: occupant.occupantAddress2!,
|
||||
occupantCity: occupant.occupantCity!,
|
||||
occupantProvince: occupant.occupantProvince!,
|
||||
occupantPostalCode: occupant.occupantPostalCode!,
|
||||
occupantPhoneNumber: occupant.occupantPhoneNumber!,
|
||||
occupantEmailAddress: occupant.occupantEmailAddress!
|
||||
},
|
||||
requestSession,
|
||||
database
|
||||
);
|
||||
)
|
||||
}
|
||||
|
||||
database.close();
|
||||
database.close()
|
||||
|
||||
return newLotOccupancyId;
|
||||
return newLotOccupancyId
|
||||
}
|
||||
|
||||
export default copyLotOccupancy;
|
||||
export default copyLotOccupancy
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import sqlite from 'better-sqlite3';
|
||||
import type * as recordTypes from '../../types/recordTypes';
|
||||
export declare function deleteLotField(lotId: number | string, lotTypeFieldId: number | string, requestSession: recordTypes.PartialSession, connectedDatabase?: sqlite.Database): boolean;
|
||||
export default deleteLotField;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import sqlite from 'better-sqlite3';
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js';
|
||||
export function deleteLotField(lotId, lotTypeFieldId, requestSession, connectedDatabase) {
|
||||
const database = connectedDatabase || sqlite(databasePath);
|
||||
const database = connectedDatabase ?? sqlite(databasePath);
|
||||
const rightNowMillis = Date.now();
|
||||
const result = database
|
||||
.prepare(`update LotFields
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import sqlite from 'better-sqlite3'
|
||||
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'
|
||||
|
||||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes'
|
||||
|
||||
export function deleteLotField(
|
||||
lotId: number | string,
|
||||
|
|
@ -10,9 +10,9 @@ export function deleteLotField(
|
|||
requestSession: recordTypes.PartialSession,
|
||||
connectedDatabase?: sqlite.Database
|
||||
): boolean {
|
||||
const database = connectedDatabase || sqlite(databasePath);
|
||||
const database = connectedDatabase ?? sqlite(databasePath)
|
||||
|
||||
const rightNowMillis = Date.now();
|
||||
const rightNowMillis = Date.now()
|
||||
|
||||
const result = database
|
||||
.prepare(
|
||||
|
|
@ -22,13 +22,13 @@ export function deleteLotField(
|
|||
where lotId = ?
|
||||
and lotTypeFieldId = ?`
|
||||
)
|
||||
.run(requestSession.user.userName, rightNowMillis, lotId, lotTypeFieldId);
|
||||
.run(requestSession.user!.userName, rightNowMillis, lotId, lotTypeFieldId)
|
||||
|
||||
if (!connectedDatabase) {
|
||||
database.close();
|
||||
database.close()
|
||||
}
|
||||
|
||||
return result.changes > 0;
|
||||
return result.changes > 0
|
||||
}
|
||||
|
||||
export default deleteLotField;
|
||||
export default deleteLotField
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes';
|
||||
export declare function deleteLotOccupancyFee(lotOccupancyId: number | string, feeId: number | string, requestSession: recordTypes.PartialSession): boolean;
|
||||
export default deleteLotOccupancyFee;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import sqlite from 'better-sqlite3';
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js';
|
||||
export function deleteLotOccupancyFee(lotOccupancyId, feeId, requestSession) {
|
||||
const database = sqlite(databasePath);
|
||||
const rightNowMillis = Date.now();
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import sqlite from 'better-sqlite3'
|
||||
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'
|
||||
|
||||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes'
|
||||
|
||||
export function deleteLotOccupancyFee(
|
||||
lotOccupancyId: number | string,
|
||||
feeId: number | string,
|
||||
requestSession: recordTypes.PartialSession
|
||||
): boolean {
|
||||
const database = sqlite(databasePath);
|
||||
const database = sqlite(databasePath)
|
||||
|
||||
const rightNowMillis = Date.now();
|
||||
const rightNowMillis = Date.now()
|
||||
|
||||
const result = database
|
||||
.prepare(
|
||||
|
|
@ -21,11 +21,11 @@ export function deleteLotOccupancyFee(
|
|||
where lotOccupancyId = ?
|
||||
and feeId = ?`
|
||||
)
|
||||
.run(requestSession.user.userName, rightNowMillis, lotOccupancyId, feeId);
|
||||
.run(requestSession.user!.userName, rightNowMillis, lotOccupancyId, feeId)
|
||||
|
||||
database.close();
|
||||
database.close()
|
||||
|
||||
return result.changes > 0;
|
||||
return result.changes > 0
|
||||
}
|
||||
|
||||
export default deleteLotOccupancyFee;
|
||||
export default deleteLotOccupancyFee
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import sqlite from 'better-sqlite3';
|
||||
import type * as recordTypes from '../../types/recordTypes';
|
||||
export declare function deleteLotOccupancyField(lotOccupancyId: number | string, occupancyTypeFieldId: number | string, requestSession: recordTypes.PartialSession, connectedDatabase?: sqlite.Database): boolean;
|
||||
export default deleteLotOccupancyField;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import sqlite from 'better-sqlite3';
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js';
|
||||
export function deleteLotOccupancyField(lotOccupancyId, occupancyTypeFieldId, requestSession, connectedDatabase) {
|
||||
const database = connectedDatabase || sqlite(databasePath);
|
||||
const database = connectedDatabase ?? sqlite(databasePath);
|
||||
const rightNowMillis = Date.now();
|
||||
const result = database
|
||||
.prepare(`update LotOccupancyFields
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import sqlite from 'better-sqlite3'
|
||||
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'
|
||||
|
||||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes'
|
||||
|
||||
export function deleteLotOccupancyField(
|
||||
lotOccupancyId: number | string,
|
||||
|
|
@ -10,9 +10,9 @@ export function deleteLotOccupancyField(
|
|||
requestSession: recordTypes.PartialSession,
|
||||
connectedDatabase?: sqlite.Database
|
||||
): boolean {
|
||||
const database = connectedDatabase || sqlite(databasePath);
|
||||
const database = connectedDatabase ?? sqlite(databasePath)
|
||||
|
||||
const rightNowMillis = Date.now();
|
||||
const rightNowMillis = Date.now()
|
||||
|
||||
const result = database
|
||||
.prepare(
|
||||
|
|
@ -22,13 +22,18 @@ export function deleteLotOccupancyField(
|
|||
where lotOccupancyId = ?
|
||||
and occupancyTypeFieldId = ?`
|
||||
)
|
||||
.run(requestSession.user.userName, rightNowMillis, lotOccupancyId, occupancyTypeFieldId);
|
||||
.run(
|
||||
requestSession.user!.userName,
|
||||
rightNowMillis,
|
||||
lotOccupancyId,
|
||||
occupancyTypeFieldId
|
||||
)
|
||||
|
||||
if (!connectedDatabase) {
|
||||
database.close();
|
||||
database.close()
|
||||
}
|
||||
|
||||
return result.changes > 0;
|
||||
return result.changes > 0
|
||||
}
|
||||
|
||||
export default deleteLotOccupancyField;
|
||||
export default deleteLotOccupancyField
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes';
|
||||
export declare function deleteLotOccupancyOccupant(lotOccupancyId: number | string, lotOccupantIndex: number | string, requestSession: recordTypes.PartialSession): boolean;
|
||||
export default deleteLotOccupancyOccupant;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import sqlite from 'better-sqlite3';
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js';
|
||||
export function deleteLotOccupancyOccupant(lotOccupancyId, lotOccupantIndex, requestSession) {
|
||||
const database = sqlite(databasePath);
|
||||
const rightNowMillis = Date.now();
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import sqlite from 'better-sqlite3'
|
||||
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'
|
||||
|
||||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes'
|
||||
|
||||
export function deleteLotOccupancyOccupant(
|
||||
lotOccupancyId: number | string,
|
||||
lotOccupantIndex: number | string,
|
||||
requestSession: recordTypes.PartialSession
|
||||
): boolean {
|
||||
const database = sqlite(databasePath);
|
||||
const database = sqlite(databasePath)
|
||||
|
||||
const rightNowMillis = Date.now();
|
||||
const rightNowMillis = Date.now()
|
||||
|
||||
const result = database
|
||||
.prepare(
|
||||
|
|
@ -21,11 +21,16 @@ export function deleteLotOccupancyOccupant(
|
|||
where lotOccupancyId = ?
|
||||
and lotOccupantIndex = ?`
|
||||
)
|
||||
.run(requestSession.user.userName, rightNowMillis, lotOccupancyId, lotOccupantIndex);
|
||||
.run(
|
||||
requestSession.user!.userName,
|
||||
rightNowMillis,
|
||||
lotOccupancyId,
|
||||
lotOccupantIndex
|
||||
)
|
||||
|
||||
database.close();
|
||||
database.close()
|
||||
|
||||
return result.changes > 0;
|
||||
return result.changes > 0
|
||||
}
|
||||
|
||||
export default deleteLotOccupancyOccupant;
|
||||
export default deleteLotOccupancyOccupant
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes';
|
||||
export declare function deleteLotOccupancyTransaction(lotOccupancyId: number | string, transactionIndex: number | string, requestSession: recordTypes.PartialSession): boolean;
|
||||
export default deleteLotOccupancyTransaction;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import sqlite from 'better-sqlite3';
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js';
|
||||
export function deleteLotOccupancyTransaction(lotOccupancyId, transactionIndex, requestSession) {
|
||||
const database = sqlite(databasePath);
|
||||
const rightNowMillis = Date.now();
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import sqlite from 'better-sqlite3'
|
||||
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'
|
||||
|
||||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes'
|
||||
|
||||
export function deleteLotOccupancyTransaction(
|
||||
lotOccupancyId: number | string,
|
||||
transactionIndex: number | string,
|
||||
requestSession: recordTypes.PartialSession
|
||||
): boolean {
|
||||
const database = sqlite(databasePath);
|
||||
const database = sqlite(databasePath)
|
||||
|
||||
const rightNowMillis = Date.now();
|
||||
const rightNowMillis = Date.now()
|
||||
|
||||
const result = database
|
||||
.prepare(
|
||||
|
|
@ -21,11 +21,16 @@ export function deleteLotOccupancyTransaction(
|
|||
where lotOccupancyId = ?
|
||||
and transactionIndex = ?`
|
||||
)
|
||||
.run(requestSession.user.userName, rightNowMillis, lotOccupancyId, transactionIndex);
|
||||
.run(
|
||||
requestSession.user!.userName,
|
||||
rightNowMillis,
|
||||
lotOccupancyId,
|
||||
transactionIndex
|
||||
)
|
||||
|
||||
database.close();
|
||||
database.close()
|
||||
|
||||
return result.changes > 0;
|
||||
return result.changes > 0
|
||||
}
|
||||
|
||||
export default deleteLotOccupancyTransaction;
|
||||
export default deleteLotOccupancyTransaction
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes';
|
||||
export declare function deleteOccupancyTypePrint(occupancyTypeId: number | string, printEJS: string, requestSession: recordTypes.PartialSession): boolean;
|
||||
export default deleteOccupancyTypePrint;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { clearCacheByTableName } from "../functions.cache.js";
|
||||
import sqlite from 'better-sqlite3';
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js';
|
||||
import { clearCacheByTableName } from '../functions.cache.js';
|
||||
export function deleteOccupancyTypePrint(occupancyTypeId, printEJS, requestSession) {
|
||||
const database = sqlite(databasePath);
|
||||
const rightNowMillis = Date.now();
|
||||
|
|
@ -12,7 +12,7 @@ export function deleteOccupancyTypePrint(occupancyTypeId, printEJS, requestSessi
|
|||
and printEJS = ?`)
|
||||
.run(requestSession.user.userName, rightNowMillis, occupancyTypeId, printEJS);
|
||||
database.close();
|
||||
clearCacheByTableName("OccupancyTypePrints");
|
||||
clearCacheByTableName('OccupancyTypePrints');
|
||||
return result.changes > 0;
|
||||
}
|
||||
export default deleteOccupancyTypePrint;
|
||||
|
|
|
|||
|
|
@ -1,19 +1,19 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import sqlite from 'better-sqlite3'
|
||||
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'
|
||||
|
||||
import { clearCacheByTableName } from "../functions.cache.js";
|
||||
import { clearCacheByTableName } from '../functions.cache.js'
|
||||
|
||||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes'
|
||||
|
||||
export function deleteOccupancyTypePrint(
|
||||
occupancyTypeId: number | string,
|
||||
printEJS: string,
|
||||
requestSession: recordTypes.PartialSession
|
||||
): boolean {
|
||||
const database = sqlite(databasePath);
|
||||
const database = sqlite(databasePath)
|
||||
|
||||
const rightNowMillis = Date.now();
|
||||
const rightNowMillis = Date.now()
|
||||
|
||||
const result = database
|
||||
.prepare(
|
||||
|
|
@ -23,13 +23,18 @@ export function deleteOccupancyTypePrint(
|
|||
where occupancyTypeId = ?
|
||||
and printEJS = ?`
|
||||
)
|
||||
.run(requestSession.user.userName, rightNowMillis, occupancyTypeId, printEJS);
|
||||
.run(
|
||||
requestSession.user!.userName,
|
||||
rightNowMillis,
|
||||
occupancyTypeId,
|
||||
printEJS
|
||||
)
|
||||
|
||||
database.close();
|
||||
database.close()
|
||||
|
||||
clearCacheByTableName("OccupancyTypePrints");
|
||||
clearCacheByTableName('OccupancyTypePrints')
|
||||
|
||||
return result.changes > 0;
|
||||
return result.changes > 0
|
||||
}
|
||||
|
||||
export default deleteOccupancyTypePrint;
|
||||
export default deleteOccupancyTypePrint
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import type * as recordTypes from "../../types/recordTypes";
|
||||
declare type RecordTable = "FeeCategories" | "Fees" | "Lots" | "LotComments" | "LotOccupancies" | "LotOccupancyComments" | "LotOccupantTypes" | "LotStatuses" | "LotTypes" | "LotTypeFields" | "Maps" | "OccupancyTypes" | "OccupancyTypeFields" | "WorkOrders" | "WorkOrderComments" | "WorkOrderMilestones" | "WorkOrderMilestoneTypes" | "WorkOrderTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes';
|
||||
declare type RecordTable = 'FeeCategories' | 'Fees' | 'Lots' | 'LotComments' | 'LotOccupancies' | 'LotOccupancyComments' | 'LotOccupantTypes' | 'LotStatuses' | 'LotTypes' | 'LotTypeFields' | 'Maps' | 'OccupancyTypes' | 'OccupancyTypeFields' | 'WorkOrders' | 'WorkOrderComments' | 'WorkOrderMilestones' | 'WorkOrderMilestoneTypes' | 'WorkOrderTypes';
|
||||
export declare function deleteRecord(recordTable: RecordTable, recordId: number | string, requestSession: recordTypes.PartialSession): boolean;
|
||||
export {};
|
||||
|
|
|
|||
|
|
@ -1,37 +1,44 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { clearCacheByTableName } from "../functions.cache.js";
|
||||
import sqlite from 'better-sqlite3';
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js';
|
||||
import { clearCacheByTableName } from '../functions.cache.js';
|
||||
const recordIdColumns = new Map();
|
||||
recordIdColumns.set("FeeCategories", "feeCategoryId");
|
||||
recordIdColumns.set("Fees", "feeId");
|
||||
recordIdColumns.set("Lots", "lotId");
|
||||
recordIdColumns.set("LotComments", "lotCommentId");
|
||||
recordIdColumns.set("LotOccupancies", "lotOccupancyId");
|
||||
recordIdColumns.set("LotOccupancyComments", "lotOccupancyCommentId");
|
||||
recordIdColumns.set("LotOccupantTypes", "lotOccupantTypeId");
|
||||
recordIdColumns.set("LotStatuses", "lotStatusId");
|
||||
recordIdColumns.set("LotTypes", "lotTypeId");
|
||||
recordIdColumns.set("LotTypeFields", "lotTypeId");
|
||||
recordIdColumns.set("Maps", "mapId");
|
||||
recordIdColumns.set("OccupancyTypes", "occupancyTypeId");
|
||||
recordIdColumns.set("OccupancyTypeFields", "occupancyTypeFieldId");
|
||||
recordIdColumns.set("WorkOrders", "workOrderId");
|
||||
recordIdColumns.set("WorkOrderComments", "workOrderCommentId");
|
||||
recordIdColumns.set("WorkOrderMilestones", "workOrderMilestoneId");
|
||||
recordIdColumns.set("WorkOrderMilestoneTypes", "workOrderMilestoneTypeId");
|
||||
recordIdColumns.set("WorkOrderTypes", "workOrderTypeId");
|
||||
recordIdColumns.set('FeeCategories', 'feeCategoryId');
|
||||
recordIdColumns.set('Fees', 'feeId');
|
||||
recordIdColumns.set('Lots', 'lotId');
|
||||
recordIdColumns.set('LotComments', 'lotCommentId');
|
||||
recordIdColumns.set('LotOccupancies', 'lotOccupancyId');
|
||||
recordIdColumns.set('LotOccupancyComments', 'lotOccupancyCommentId');
|
||||
recordIdColumns.set('LotOccupantTypes', 'lotOccupantTypeId');
|
||||
recordIdColumns.set('LotStatuses', 'lotStatusId');
|
||||
recordIdColumns.set('LotTypes', 'lotTypeId');
|
||||
recordIdColumns.set('LotTypeFields', 'lotTypeId');
|
||||
recordIdColumns.set('Maps', 'mapId');
|
||||
recordIdColumns.set('OccupancyTypes', 'occupancyTypeId');
|
||||
recordIdColumns.set('OccupancyTypeFields', 'occupancyTypeFieldId');
|
||||
recordIdColumns.set('WorkOrders', 'workOrderId');
|
||||
recordIdColumns.set('WorkOrderComments', 'workOrderCommentId');
|
||||
recordIdColumns.set('WorkOrderMilestones', 'workOrderMilestoneId');
|
||||
recordIdColumns.set('WorkOrderMilestoneTypes', 'workOrderMilestoneTypeId');
|
||||
recordIdColumns.set('WorkOrderTypes', 'workOrderTypeId');
|
||||
const relatedTables = new Map();
|
||||
relatedTables.set("FeeCategories", ["Fees"]);
|
||||
relatedTables.set("Lots", ["LotFields", "LotComments"]);
|
||||
relatedTables.set("LotOccupancies", ["LotOccupancyOccupants", "LotOccupancyFields", "LotOccupancyComments"]);
|
||||
relatedTables.set("LotTypes", ["LotTypeFields"]);
|
||||
relatedTables.set("Maps", ["Lots"]);
|
||||
relatedTables.set("OccupancyTypes", ["OccupancyTypePrints", "OccupancyTypeFields"]);
|
||||
relatedTables.set("WorkOrders", [
|
||||
"WorkOrderMilestones",
|
||||
"WorkOrderLots",
|
||||
"WorkOrderLotOccupancies",
|
||||
"WorkOrderComments"
|
||||
relatedTables.set('FeeCategories', ['Fees']);
|
||||
relatedTables.set('Lots', ['LotFields', 'LotComments']);
|
||||
relatedTables.set('LotOccupancies', [
|
||||
'LotOccupancyOccupants',
|
||||
'LotOccupancyFields',
|
||||
'LotOccupancyComments'
|
||||
]);
|
||||
relatedTables.set('LotTypes', ['LotTypeFields']);
|
||||
relatedTables.set('Maps', ['Lots']);
|
||||
relatedTables.set('OccupancyTypes', [
|
||||
'OccupancyTypePrints',
|
||||
'OccupancyTypeFields'
|
||||
]);
|
||||
relatedTables.set('WorkOrders', [
|
||||
'WorkOrderMilestones',
|
||||
'WorkOrderLots',
|
||||
'WorkOrderLotOccupancies',
|
||||
'WorkOrderComments'
|
||||
]);
|
||||
export function deleteRecord(recordTable, recordId, requestSession) {
|
||||
const database = sqlite(databasePath);
|
||||
|
|
@ -43,7 +50,7 @@ export function deleteRecord(recordTable, recordId, requestSession) {
|
|||
where ${recordIdColumns.get(recordTable)} = ?
|
||||
and recordDelete_timeMillis is null`)
|
||||
.run(requestSession.user.userName, rightNowMillis, recordId);
|
||||
for (const relatedTable of relatedTables.get(recordTable) || []) {
|
||||
for (const relatedTable of relatedTables.get(recordTable) ?? []) {
|
||||
database
|
||||
.prepare(`update ${relatedTable}
|
||||
set recordDelete_userName = ?,
|
||||
|
|
|
|||
|
|
@ -1,99 +1,106 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import sqlite from 'better-sqlite3'
|
||||
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'
|
||||
|
||||
import { clearCacheByTableName } from "../functions.cache.js";
|
||||
import { clearCacheByTableName } from '../functions.cache.js'
|
||||
|
||||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes'
|
||||
|
||||
type RecordTable =
|
||||
| "FeeCategories"
|
||||
| "Fees"
|
||||
| "Lots"
|
||||
| "LotComments"
|
||||
| "LotOccupancies"
|
||||
| "LotOccupancyComments"
|
||||
| "LotOccupantTypes"
|
||||
| "LotStatuses"
|
||||
| "LotTypes"
|
||||
| "LotTypeFields"
|
||||
| "Maps"
|
||||
| "OccupancyTypes"
|
||||
| "OccupancyTypeFields"
|
||||
| "WorkOrders"
|
||||
| "WorkOrderComments"
|
||||
| "WorkOrderMilestones"
|
||||
| "WorkOrderMilestoneTypes"
|
||||
| "WorkOrderTypes";
|
||||
| 'FeeCategories'
|
||||
| 'Fees'
|
||||
| 'Lots'
|
||||
| 'LotComments'
|
||||
| 'LotOccupancies'
|
||||
| 'LotOccupancyComments'
|
||||
| 'LotOccupantTypes'
|
||||
| 'LotStatuses'
|
||||
| 'LotTypes'
|
||||
| 'LotTypeFields'
|
||||
| 'Maps'
|
||||
| 'OccupancyTypes'
|
||||
| 'OccupancyTypeFields'
|
||||
| 'WorkOrders'
|
||||
| 'WorkOrderComments'
|
||||
| 'WorkOrderMilestones'
|
||||
| 'WorkOrderMilestoneTypes'
|
||||
| 'WorkOrderTypes'
|
||||
|
||||
const recordIdColumns: Map<RecordTable, string> = new Map();
|
||||
recordIdColumns.set("FeeCategories", "feeCategoryId");
|
||||
recordIdColumns.set("Fees", "feeId");
|
||||
recordIdColumns.set("Lots", "lotId");
|
||||
recordIdColumns.set("LotComments", "lotCommentId");
|
||||
recordIdColumns.set("LotOccupancies", "lotOccupancyId");
|
||||
recordIdColumns.set("LotOccupancyComments", "lotOccupancyCommentId");
|
||||
recordIdColumns.set("LotOccupantTypes", "lotOccupantTypeId");
|
||||
recordIdColumns.set("LotStatuses", "lotStatusId");
|
||||
recordIdColumns.set("LotTypes", "lotTypeId");
|
||||
recordIdColumns.set("LotTypeFields", "lotTypeId");
|
||||
recordIdColumns.set("Maps", "mapId");
|
||||
recordIdColumns.set("OccupancyTypes", "occupancyTypeId");
|
||||
recordIdColumns.set("OccupancyTypeFields", "occupancyTypeFieldId");
|
||||
recordIdColumns.set("WorkOrders", "workOrderId");
|
||||
recordIdColumns.set("WorkOrderComments", "workOrderCommentId");
|
||||
recordIdColumns.set("WorkOrderMilestones", "workOrderMilestoneId");
|
||||
recordIdColumns.set("WorkOrderMilestoneTypes", "workOrderMilestoneTypeId");
|
||||
recordIdColumns.set("WorkOrderTypes", "workOrderTypeId");
|
||||
const recordIdColumns: Map<RecordTable, string> = new Map()
|
||||
recordIdColumns.set('FeeCategories', 'feeCategoryId')
|
||||
recordIdColumns.set('Fees', 'feeId')
|
||||
recordIdColumns.set('Lots', 'lotId')
|
||||
recordIdColumns.set('LotComments', 'lotCommentId')
|
||||
recordIdColumns.set('LotOccupancies', 'lotOccupancyId')
|
||||
recordIdColumns.set('LotOccupancyComments', 'lotOccupancyCommentId')
|
||||
recordIdColumns.set('LotOccupantTypes', 'lotOccupantTypeId')
|
||||
recordIdColumns.set('LotStatuses', 'lotStatusId')
|
||||
recordIdColumns.set('LotTypes', 'lotTypeId')
|
||||
recordIdColumns.set('LotTypeFields', 'lotTypeId')
|
||||
recordIdColumns.set('Maps', 'mapId')
|
||||
recordIdColumns.set('OccupancyTypes', 'occupancyTypeId')
|
||||
recordIdColumns.set('OccupancyTypeFields', 'occupancyTypeFieldId')
|
||||
recordIdColumns.set('WorkOrders', 'workOrderId')
|
||||
recordIdColumns.set('WorkOrderComments', 'workOrderCommentId')
|
||||
recordIdColumns.set('WorkOrderMilestones', 'workOrderMilestoneId')
|
||||
recordIdColumns.set('WorkOrderMilestoneTypes', 'workOrderMilestoneTypeId')
|
||||
recordIdColumns.set('WorkOrderTypes', 'workOrderTypeId')
|
||||
|
||||
const relatedTables: Map<RecordTable, string[]> = new Map();
|
||||
relatedTables.set("FeeCategories", ["Fees"]);
|
||||
relatedTables.set("Lots", ["LotFields", "LotComments"]);
|
||||
relatedTables.set("LotOccupancies", ["LotOccupancyOccupants", "LotOccupancyFields", "LotOccupancyComments"]);
|
||||
relatedTables.set("LotTypes", ["LotTypeFields"]);
|
||||
relatedTables.set("Maps", ["Lots"]);
|
||||
relatedTables.set("OccupancyTypes", ["OccupancyTypePrints", "OccupancyTypeFields"]);
|
||||
relatedTables.set("WorkOrders", [
|
||||
"WorkOrderMilestones",
|
||||
"WorkOrderLots",
|
||||
"WorkOrderLotOccupancies",
|
||||
"WorkOrderComments"
|
||||
]);
|
||||
const relatedTables: Map<RecordTable, string[]> = new Map()
|
||||
relatedTables.set('FeeCategories', ['Fees'])
|
||||
relatedTables.set('Lots', ['LotFields', 'LotComments'])
|
||||
relatedTables.set('LotOccupancies', [
|
||||
'LotOccupancyOccupants',
|
||||
'LotOccupancyFields',
|
||||
'LotOccupancyComments'
|
||||
])
|
||||
relatedTables.set('LotTypes', ['LotTypeFields'])
|
||||
relatedTables.set('Maps', ['Lots'])
|
||||
relatedTables.set('OccupancyTypes', [
|
||||
'OccupancyTypePrints',
|
||||
'OccupancyTypeFields'
|
||||
])
|
||||
relatedTables.set('WorkOrders', [
|
||||
'WorkOrderMilestones',
|
||||
'WorkOrderLots',
|
||||
'WorkOrderLotOccupancies',
|
||||
'WorkOrderComments'
|
||||
])
|
||||
|
||||
export function deleteRecord(
|
||||
recordTable: RecordTable,
|
||||
recordId: number | string,
|
||||
requestSession: recordTypes.PartialSession
|
||||
): boolean {
|
||||
const database = sqlite(databasePath);
|
||||
const database = sqlite(databasePath)
|
||||
|
||||
const rightNowMillis = Date.now();
|
||||
const rightNowMillis = Date.now()
|
||||
|
||||
const result = database
|
||||
.prepare(
|
||||
`update ${recordTable}
|
||||
set recordDelete_userName = ?,
|
||||
recordDelete_timeMillis = ?
|
||||
where ${recordIdColumns.get(recordTable)} = ?
|
||||
where ${recordIdColumns.get(recordTable)!} = ?
|
||||
and recordDelete_timeMillis is null`
|
||||
)
|
||||
.run(requestSession.user.userName, rightNowMillis, recordId);
|
||||
.run(requestSession.user!.userName, rightNowMillis, recordId)
|
||||
|
||||
for (const relatedTable of relatedTables.get(recordTable) || []) {
|
||||
for (const relatedTable of relatedTables.get(recordTable) ?? []) {
|
||||
database
|
||||
.prepare(
|
||||
`update ${relatedTable}
|
||||
set recordDelete_userName = ?,
|
||||
recordDelete_timeMillis = ?
|
||||
where ${recordIdColumns.get(recordTable)} = ?
|
||||
where ${recordIdColumns.get(recordTable)!} = ?
|
||||
and recordDelete_timeMillis is null`
|
||||
)
|
||||
.run(requestSession.user.userName, rightNowMillis, recordId);
|
||||
.run(requestSession.user!.userName, rightNowMillis, recordId)
|
||||
}
|
||||
|
||||
database.close();
|
||||
database.close()
|
||||
|
||||
clearCacheByTableName(recordTable);
|
||||
clearCacheByTableName(recordTable)
|
||||
|
||||
return result.changes > 0;
|
||||
return result.changes > 0
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes';
|
||||
export declare function deleteWorkOrderLot(workOrderId: number | string, lotId: number | string, requestSession: recordTypes.PartialSession): boolean;
|
||||
export default deleteWorkOrderLot;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import sqlite from 'better-sqlite3';
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js';
|
||||
export function deleteWorkOrderLot(workOrderId, lotId, requestSession) {
|
||||
const database = sqlite(databasePath);
|
||||
const rightNowMillis = Date.now();
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import sqlite from 'better-sqlite3'
|
||||
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'
|
||||
|
||||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes'
|
||||
|
||||
export function deleteWorkOrderLot(
|
||||
workOrderId: number | string,
|
||||
lotId: number | string,
|
||||
requestSession: recordTypes.PartialSession
|
||||
): boolean {
|
||||
const database = sqlite(databasePath);
|
||||
const database = sqlite(databasePath)
|
||||
|
||||
const rightNowMillis = Date.now();
|
||||
const rightNowMillis = Date.now()
|
||||
|
||||
const result = database
|
||||
.prepare(
|
||||
|
|
@ -21,11 +21,11 @@ export function deleteWorkOrderLot(
|
|||
where workOrderId = ?
|
||||
and lotId = ?`
|
||||
)
|
||||
.run(requestSession.user.userName, rightNowMillis, workOrderId, lotId);
|
||||
.run(requestSession.user!.userName, rightNowMillis, workOrderId, lotId)
|
||||
|
||||
database.close();
|
||||
database.close()
|
||||
|
||||
return result.changes > 0;
|
||||
return result.changes > 0
|
||||
}
|
||||
|
||||
export default deleteWorkOrderLot;
|
||||
export default deleteWorkOrderLot
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes';
|
||||
export declare function deleteWorkOrderLotOccupancy(workOrderId: number | string, lotOccupancyId: number | string, requestSession: recordTypes.PartialSession): boolean;
|
||||
export default deleteWorkOrderLotOccupancy;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import sqlite from 'better-sqlite3';
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js';
|
||||
export function deleteWorkOrderLotOccupancy(workOrderId, lotOccupancyId, requestSession) {
|
||||
const database = sqlite(databasePath);
|
||||
const rightNowMillis = Date.now();
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import sqlite from 'better-sqlite3'
|
||||
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'
|
||||
|
||||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes'
|
||||
|
||||
export function deleteWorkOrderLotOccupancy(
|
||||
workOrderId: number | string,
|
||||
lotOccupancyId: number | string,
|
||||
requestSession: recordTypes.PartialSession
|
||||
): boolean {
|
||||
const database = sqlite(databasePath);
|
||||
const database = sqlite(databasePath)
|
||||
|
||||
const rightNowMillis = Date.now();
|
||||
const rightNowMillis = Date.now()
|
||||
|
||||
const result = database
|
||||
.prepare(
|
||||
|
|
@ -21,11 +21,16 @@ export function deleteWorkOrderLotOccupancy(
|
|||
where workOrderId = ?
|
||||
and lotOccupancyId = ?`
|
||||
)
|
||||
.run(requestSession.user.userName, rightNowMillis, workOrderId, lotOccupancyId);
|
||||
.run(
|
||||
requestSession.user!.userName,
|
||||
rightNowMillis,
|
||||
workOrderId,
|
||||
lotOccupancyId
|
||||
)
|
||||
|
||||
database.close();
|
||||
database.close()
|
||||
|
||||
return result.changes > 0;
|
||||
return result.changes > 0
|
||||
}
|
||||
|
||||
export default deleteWorkOrderLotOccupancy;
|
||||
export default deleteWorkOrderLotOccupancy
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import sqlite from 'better-sqlite3';
|
||||
import type * as recordTypes from '../../types/recordTypes';
|
||||
interface GetLotOccupanciesFilters {
|
||||
lotId?: number | string;
|
||||
occupancyTime?: "" | "past" | "current" | "future";
|
||||
occupancyTime?: '' | 'past' | 'current' | 'future';
|
||||
occupancyStartDateString?: string;
|
||||
occupancyEffectiveDateString?: string;
|
||||
occupantName?: string;
|
||||
occupancyTypeId?: number | string;
|
||||
mapId?: number | string;
|
||||
lotNameSearchType?: "" | "startsWith" | "endsWith";
|
||||
lotNameSearchType?: '' | 'startsWith' | 'endsWith';
|
||||
lotName?: string;
|
||||
lotTypeId?: number | string;
|
||||
workOrderId?: number | string;
|
||||
|
|
|
|||
|
|
@ -1,60 +1,60 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import { dateIntegerToString, dateStringToInteger } from "@cityssm/expressjs-server-js/dateTimeFns.js";
|
||||
import * as configFunctions from "../functions.config.js";
|
||||
import { getOccupancyTypeById } from "../functions.cache.js";
|
||||
import { getLotOccupancyOccupants } from "./getLotOccupancyOccupants.js";
|
||||
import { getLotNameWhereClause, getOccupancyTimeWhereClause, getOccupantNameWhereClause } from "../functions.sqlFilters.js";
|
||||
import sqlite from 'better-sqlite3';
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js';
|
||||
import { dateIntegerToString, dateStringToInteger } from '@cityssm/expressjs-server-js/dateTimeFns.js';
|
||||
import * as configFunctions from '../functions.config.js';
|
||||
import { getOccupancyTypeById } from '../functions.cache.js';
|
||||
import { getLotOccupancyOccupants } from './getLotOccupancyOccupants.js';
|
||||
import { getLotNameWhereClause, getOccupancyTimeWhereClause, getOccupantNameWhereClause } from '../functions.sqlFilters.js';
|
||||
function buildWhereClause(filters) {
|
||||
let sqlWhereClause = " where o.recordDelete_timeMillis is null";
|
||||
let sqlWhereClause = ' where o.recordDelete_timeMillis is null';
|
||||
const sqlParameters = [];
|
||||
if (filters.lotId) {
|
||||
sqlWhereClause += " and o.lotId = ?";
|
||||
sqlWhereClause += ' and o.lotId = ?';
|
||||
sqlParameters.push(filters.lotId);
|
||||
}
|
||||
const lotNameFilters = getLotNameWhereClause(filters.lotName, filters.lotNameSearchType, "l");
|
||||
const lotNameFilters = getLotNameWhereClause(filters.lotName, filters.lotNameSearchType ?? '', 'l');
|
||||
sqlWhereClause += lotNameFilters.sqlWhereClause;
|
||||
sqlParameters.push(...lotNameFilters.sqlParameters);
|
||||
const occupantNameFilters = getOccupantNameWhereClause(filters.occupantName, "o");
|
||||
const occupantNameFilters = getOccupantNameWhereClause(filters.occupantName, 'o');
|
||||
if (occupantNameFilters.sqlParameters.length > 0) {
|
||||
sqlWhereClause +=
|
||||
" and o.lotOccupancyId in (select lotOccupancyId from LotOccupancyOccupants o where recordDelete_timeMillis is null" +
|
||||
' and o.lotOccupancyId in (select lotOccupancyId from LotOccupancyOccupants o where recordDelete_timeMillis is null' +
|
||||
occupantNameFilters.sqlWhereClause +
|
||||
")";
|
||||
')';
|
||||
sqlParameters.push(...occupantNameFilters.sqlParameters);
|
||||
}
|
||||
if (filters.occupancyTypeId) {
|
||||
sqlWhereClause += " and o.occupancyTypeId = ?";
|
||||
sqlWhereClause += ' and o.occupancyTypeId = ?';
|
||||
sqlParameters.push(filters.occupancyTypeId);
|
||||
}
|
||||
const occupancyTimeFilters = getOccupancyTimeWhereClause(filters.occupancyTime, "o");
|
||||
const occupancyTimeFilters = getOccupancyTimeWhereClause(filters.occupancyTime ?? '', 'o');
|
||||
sqlWhereClause += occupancyTimeFilters.sqlWhereClause;
|
||||
sqlParameters.push(...occupancyTimeFilters.sqlParameters);
|
||||
if (filters.occupancyStartDateString) {
|
||||
sqlWhereClause += " and o.occupancyStartDate = ?";
|
||||
sqlWhereClause += ' and o.occupancyStartDate = ?';
|
||||
sqlParameters.push(dateStringToInteger(filters.occupancyStartDateString));
|
||||
}
|
||||
if (filters.occupancyEffectiveDateString) {
|
||||
sqlWhereClause +=
|
||||
" and (o.occupancyStartDate <= ? and (o.occupancyEndDate is null or o.occupancyEndDate >= ?))";
|
||||
' and (o.occupancyStartDate <= ? and (o.occupancyEndDate is null or o.occupancyEndDate >= ?))';
|
||||
sqlParameters.push(dateStringToInteger(filters.occupancyEffectiveDateString), dateStringToInteger(filters.occupancyEffectiveDateString));
|
||||
}
|
||||
if (filters.mapId) {
|
||||
sqlWhereClause += " and l.mapId = ?";
|
||||
sqlWhereClause += ' and l.mapId = ?';
|
||||
sqlParameters.push(filters.mapId);
|
||||
}
|
||||
if (filters.lotTypeId) {
|
||||
sqlWhereClause += " and l.lotTypeId = ?";
|
||||
sqlWhereClause += ' and l.lotTypeId = ?';
|
||||
sqlParameters.push(filters.lotTypeId);
|
||||
}
|
||||
if (filters.workOrderId) {
|
||||
sqlWhereClause +=
|
||||
" and o.lotOccupancyId in (select lotOccupancyId from WorkOrderLotOccupancies where recordDelete_timeMillis is null and workOrderId = ?)";
|
||||
' and o.lotOccupancyId in (select lotOccupancyId from WorkOrderLotOccupancies where recordDelete_timeMillis is null and workOrderId = ?)';
|
||||
sqlParameters.push(filters.workOrderId);
|
||||
}
|
||||
if (filters.notWorkOrderId) {
|
||||
sqlWhereClause +=
|
||||
" and o.lotOccupancyId not in (select lotOccupancyId from WorkOrderLotOccupancies where recordDelete_timeMillis is null and workOrderId = ?)";
|
||||
' and o.lotOccupancyId not in (select lotOccupancyId from WorkOrderLotOccupancies where recordDelete_timeMillis is null and workOrderId = ?)';
|
||||
sqlParameters.push(filters.notWorkOrderId);
|
||||
}
|
||||
return {
|
||||
|
|
@ -63,19 +63,19 @@ function buildWhereClause(filters) {
|
|||
};
|
||||
}
|
||||
export function getLotOccupancies(filters, options, connectedDatabase) {
|
||||
const database = connectedDatabase ||
|
||||
const database = connectedDatabase ??
|
||||
sqlite(databasePath, {
|
||||
readonly: true
|
||||
});
|
||||
database.function("userFn_dateIntegerToString", dateIntegerToString);
|
||||
database.function('userFn_dateIntegerToString', dateIntegerToString);
|
||||
const { sqlWhereClause, sqlParameters } = buildWhereClause(filters);
|
||||
let count = options.limit;
|
||||
const isLimited = options.limit !== -1;
|
||||
if (isLimited) {
|
||||
count = database
|
||||
.prepare("select count(*) as recordCount" +
|
||||
" from LotOccupancies o" +
|
||||
" left join Lots l on o.lotId = l.lotId" +
|
||||
.prepare('select count(*) as recordCount' +
|
||||
' from LotOccupancies o' +
|
||||
' left join Lots l on o.lotId = l.lotId' +
|
||||
sqlWhereClause)
|
||||
.get(sqlParameters).recordCount;
|
||||
}
|
||||
|
|
@ -95,7 +95,7 @@ export function getLotOccupancies(filters, options, connectedDatabase) {
|
|||
left join Maps m on l.mapId = m.mapId
|
||||
${sqlWhereClause}
|
||||
order by o.occupancyStartDate desc, ifnull(o.occupancyEndDate, 99999999) desc, l.lotName, o.lotId, o.lotOccupancyId desc` +
|
||||
(isLimited ? ` limit ${options.limit} offset ${options.offset}` : ""))
|
||||
(isLimited ? ` limit ${options.limit} offset ${options.offset}` : ''))
|
||||
.all(sqlParameters);
|
||||
if (!isLimited) {
|
||||
count = lotOccupancies.length;
|
||||
|
|
@ -103,8 +103,8 @@ export function getLotOccupancies(filters, options, connectedDatabase) {
|
|||
for (const lotOccupancy of lotOccupancies) {
|
||||
const occupancyType = getOccupancyTypeById(lotOccupancy.occupancyTypeId);
|
||||
if (occupancyType) {
|
||||
lotOccupancy.printEJS = occupancyType.occupancyTypePrints.includes("*")
|
||||
? configFunctions.getProperty("settings.lotOccupancy.prints")[0]
|
||||
lotOccupancy.printEJS = (occupancyType.occupancyTypePrints ?? []).includes('*')
|
||||
? configFunctions.getProperty('settings.lotOccupancy.prints')[0]
|
||||
: occupancyType.occupancyTypePrints[0];
|
||||
}
|
||||
if (options.includeOccupants) {
|
||||
|
|
|
|||
|
|
@ -1,119 +1,131 @@
|
|||
import sqlite from "better-sqlite3";
|
||||
/* eslint-disable @typescript-eslint/indent */
|
||||
|
||||
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
|
||||
import sqlite from 'better-sqlite3'
|
||||
|
||||
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'
|
||||
|
||||
import {
|
||||
dateIntegerToString,
|
||||
dateStringToInteger
|
||||
} from "@cityssm/expressjs-server-js/dateTimeFns.js";
|
||||
} from '@cityssm/expressjs-server-js/dateTimeFns.js'
|
||||
|
||||
import * as configFunctions from "../functions.config.js";
|
||||
import * as configFunctions from '../functions.config.js'
|
||||
|
||||
import { getOccupancyTypeById } from "../functions.cache.js";
|
||||
import { getLotOccupancyOccupants } from "./getLotOccupancyOccupants.js";
|
||||
import { getOccupancyTypeById } from '../functions.cache.js'
|
||||
import { getLotOccupancyOccupants } from './getLotOccupancyOccupants.js'
|
||||
|
||||
import type * as recordTypes from "../../types/recordTypes";
|
||||
import type * as recordTypes from '../../types/recordTypes'
|
||||
import {
|
||||
getLotNameWhereClause,
|
||||
getOccupancyTimeWhereClause,
|
||||
getOccupantNameWhereClause
|
||||
} from "../functions.sqlFilters.js";
|
||||
} from '../functions.sqlFilters.js'
|
||||
|
||||
interface GetLotOccupanciesFilters {
|
||||
lotId?: number | string;
|
||||
occupancyTime?: "" | "past" | "current" | "future";
|
||||
occupancyStartDateString?: string;
|
||||
occupancyEffectiveDateString?: string;
|
||||
occupantName?: string;
|
||||
occupancyTypeId?: number | string;
|
||||
mapId?: number | string;
|
||||
lotNameSearchType?: "" | "startsWith" | "endsWith";
|
||||
lotName?: string;
|
||||
lotTypeId?: number | string;
|
||||
workOrderId?: number | string;
|
||||
notWorkOrderId?: number | string;
|
||||
lotId?: number | string
|
||||
occupancyTime?: '' | 'past' | 'current' | 'future'
|
||||
occupancyStartDateString?: string
|
||||
occupancyEffectiveDateString?: string
|
||||
occupantName?: string
|
||||
occupancyTypeId?: number | string
|
||||
mapId?: number | string
|
||||
lotNameSearchType?: '' | 'startsWith' | 'endsWith'
|
||||
lotName?: string
|
||||
lotTypeId?: number | string
|
||||
workOrderId?: number | string
|
||||
notWorkOrderId?: number | string
|
||||
}
|
||||
|
||||
interface GetLotOccupanciesOptions {
|
||||
limit: -1 | number;
|
||||
offset: number;
|
||||
includeOccupants: boolean;
|
||||
limit: -1 | number
|
||||
offset: number
|
||||
includeOccupants: boolean
|
||||
}
|
||||
|
||||
function buildWhereClause(filters: GetLotOccupanciesFilters): {
|
||||
sqlWhereClause: string;
|
||||
sqlParameters: unknown[];
|
||||
sqlWhereClause: string
|
||||
sqlParameters: unknown[]
|
||||
} {
|
||||
let sqlWhereClause = " where o.recordDelete_timeMillis is null";
|
||||
const sqlParameters: unknown[] = [];
|
||||
let sqlWhereClause = ' where o.recordDelete_timeMillis is null'
|
||||
const sqlParameters: unknown[] = []
|
||||
|
||||
if (filters.lotId) {
|
||||
sqlWhereClause += " and o.lotId = ?";
|
||||
sqlParameters.push(filters.lotId);
|
||||
sqlWhereClause += ' and o.lotId = ?'
|
||||
sqlParameters.push(filters.lotId)
|
||||
}
|
||||
|
||||
const lotNameFilters = getLotNameWhereClause(filters.lotName, filters.lotNameSearchType, "l");
|
||||
sqlWhereClause += lotNameFilters.sqlWhereClause;
|
||||
sqlParameters.push(...lotNameFilters.sqlParameters);
|
||||
const lotNameFilters = getLotNameWhereClause(
|
||||
filters.lotName,
|
||||
filters.lotNameSearchType ?? '',
|
||||
'l'
|
||||
)
|
||||
sqlWhereClause += lotNameFilters.sqlWhereClause
|
||||
sqlParameters.push(...lotNameFilters.sqlParameters)
|
||||
|
||||
const occupantNameFilters = getOccupantNameWhereClause(filters.occupantName, "o");
|
||||
const occupantNameFilters = getOccupantNameWhereClause(
|
||||
filters.occupantName,
|
||||
'o'
|
||||
)
|
||||
if (occupantNameFilters.sqlParameters.length > 0) {
|
||||
sqlWhereClause +=
|
||||
" and o.lotOccupancyId in (select lotOccupancyId from LotOccupancyOccupants o where recordDelete_timeMillis is null" +
|
||||
' and o.lotOccupancyId in (select lotOccupancyId from LotOccupancyOccupants o where recordDelete_timeMillis is null' +
|
||||
occupantNameFilters.sqlWhereClause +
|
||||
")";
|
||||
sqlParameters.push(...occupantNameFilters.sqlParameters);
|
||||
')'
|
||||
sqlParameters.push(...occupantNameFilters.sqlParameters)
|
||||
}
|
||||
|
||||
if (filters.occupancyTypeId) {
|
||||
sqlWhereClause += " and o.occupancyTypeId = ?";
|
||||
sqlParameters.push(filters.occupancyTypeId);
|
||||
sqlWhereClause += ' and o.occupancyTypeId = ?'
|
||||
sqlParameters.push(filters.occupancyTypeId)
|
||||
}
|
||||
|
||||
const occupancyTimeFilters = getOccupancyTimeWhereClause(filters.occupancyTime, "o");
|
||||
sqlWhereClause += occupancyTimeFilters.sqlWhereClause;
|
||||
sqlParameters.push(...occupancyTimeFilters.sqlParameters);
|
||||
const occupancyTimeFilters = getOccupancyTimeWhereClause(
|
||||
filters.occupancyTime ?? '',
|
||||
'o'
|
||||
)
|
||||
sqlWhereClause += occupancyTimeFilters.sqlWhereClause
|
||||
sqlParameters.push(...occupancyTimeFilters.sqlParameters)
|
||||
|
||||
if (filters.occupancyStartDateString) {
|
||||
sqlWhereClause += " and o.occupancyStartDate = ?";
|
||||
sqlParameters.push(dateStringToInteger(filters.occupancyStartDateString));
|
||||
sqlWhereClause += ' and o.occupancyStartDate = ?'
|
||||
sqlParameters.push(dateStringToInteger(filters.occupancyStartDateString))
|
||||
}
|
||||
|
||||
if (filters.occupancyEffectiveDateString) {
|
||||
sqlWhereClause +=
|
||||
" and (o.occupancyStartDate <= ? and (o.occupancyEndDate is null or o.occupancyEndDate >= ?))";
|
||||
' and (o.occupancyStartDate <= ? and (o.occupancyEndDate is null or o.occupancyEndDate >= ?))'
|
||||
sqlParameters.push(
|
||||
dateStringToInteger(filters.occupancyEffectiveDateString),
|
||||
dateStringToInteger(filters.occupancyEffectiveDateString)
|
||||
);
|
||||
)
|
||||
}
|
||||
|
||||
if (filters.mapId) {
|
||||
sqlWhereClause += " and l.mapId = ?";
|
||||
sqlParameters.push(filters.mapId);
|
||||
sqlWhereClause += ' and l.mapId = ?'
|
||||
sqlParameters.push(filters.mapId)
|
||||
}
|
||||
|
||||
if (filters.lotTypeId) {
|
||||
sqlWhereClause += " and l.lotTypeId = ?";
|
||||
sqlParameters.push(filters.lotTypeId);
|
||||
sqlWhereClause += ' and l.lotTypeId = ?'
|
||||
sqlParameters.push(filters.lotTypeId)
|
||||
}
|
||||
|
||||
if (filters.workOrderId) {
|
||||
sqlWhereClause +=
|
||||
" and o.lotOccupancyId in (select lotOccupancyId from WorkOrderLotOccupancies where recordDelete_timeMillis is null and workOrderId = ?)";
|
||||
sqlParameters.push(filters.workOrderId);
|
||||
' and o.lotOccupancyId in (select lotOccupancyId from WorkOrderLotOccupancies where recordDelete_timeMillis is null and workOrderId = ?)'
|
||||
sqlParameters.push(filters.workOrderId)
|
||||
}
|
||||
|
||||
if (filters.notWorkOrderId) {
|
||||
sqlWhereClause +=
|
||||
" and o.lotOccupancyId not in (select lotOccupancyId from WorkOrderLotOccupancies where recordDelete_timeMillis is null and workOrderId = ?)";
|
||||
sqlParameters.push(filters.notWorkOrderId);
|
||||
' and o.lotOccupancyId not in (select lotOccupancyId from WorkOrderLotOccupancies where recordDelete_timeMillis is null and workOrderId = ?)'
|
||||
sqlParameters.push(filters.notWorkOrderId)
|
||||
}
|
||||
|
||||
return {
|
||||
sqlWhereClause,
|
||||
sqlParameters
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
export function getLotOccupancies(
|
||||
|
|
@ -121,35 +133,35 @@ export function getLotOccupancies(
|
|||
options: GetLotOccupanciesOptions,
|
||||
connectedDatabase?: sqlite.Database
|
||||
): {
|
||||
count: number;
|
||||
lotOccupancies: recordTypes.LotOccupancy[];
|
||||
count: number
|
||||
lotOccupancies: recordTypes.LotOccupancy[]
|
||||
} {
|
||||
const database =
|
||||
connectedDatabase ||
|
||||
connectedDatabase ??
|
||||
sqlite(databasePath, {
|
||||
readonly: true
|
||||
});
|
||||
})
|
||||
|
||||
database.function("userFn_dateIntegerToString", dateIntegerToString);
|
||||
database.function('userFn_dateIntegerToString', dateIntegerToString)
|
||||
|
||||
const { sqlWhereClause, sqlParameters } = buildWhereClause(filters);
|
||||
const { sqlWhereClause, sqlParameters } = buildWhereClause(filters)
|
||||
|
||||
let count = options.limit;
|
||||
let count = options.limit
|
||||
|
||||
const isLimited = options.limit !== -1;
|
||||
const isLimited = options.limit !== -1
|
||||
|
||||
if (isLimited) {
|
||||
count = database
|
||||
.prepare(
|
||||
"select count(*) as recordCount" +
|
||||
" from LotOccupancies o" +
|
||||
" left join Lots l on o.lotId = l.lotId" +
|
||||
'select count(*) as recordCount' +
|
||||
' from LotOccupancies o' +
|
||||
' left join Lots l on o.lotId = l.lotId' +
|
||||
sqlWhereClause
|
||||
)
|
||||
.get(sqlParameters).recordCount;
|
||||
.get(sqlParameters).recordCount
|
||||
}
|
||||
|
||||
let lotOccupancies: recordTypes.LotOccupancy[] = [];
|
||||
let lotOccupancies: recordTypes.LotOccupancy[] = []
|
||||
|
||||
if (count !== 0) {
|
||||
lotOccupancies = database
|
||||
|
|
@ -167,40 +179,42 @@ export function getLotOccupancies(
|
|||
left join Maps m on l.mapId = m.mapId
|
||||
${sqlWhereClause}
|
||||
order by o.occupancyStartDate desc, ifnull(o.occupancyEndDate, 99999999) desc, l.lotName, o.lotId, o.lotOccupancyId desc` +
|
||||
(isLimited ? ` limit ${options.limit} offset ${options.offset}` : "")
|
||||
(isLimited ? ` limit ${options.limit} offset ${options.offset}` : '')
|
||||
)
|
||||
.all(sqlParameters);
|
||||
.all(sqlParameters)
|
||||
|
||||
if (!isLimited) {
|
||||
count = lotOccupancies.length;
|
||||
count = lotOccupancies.length
|
||||
}
|
||||
|
||||
for (const lotOccupancy of lotOccupancies) {
|
||||
const occupancyType = getOccupancyTypeById(lotOccupancy.occupancyTypeId);
|
||||
const occupancyType = getOccupancyTypeById(lotOccupancy.occupancyTypeId!)
|
||||
|
||||
if (occupancyType) {
|
||||
lotOccupancy.printEJS = occupancyType.occupancyTypePrints.includes("*")
|
||||
? configFunctions.getProperty("settings.lotOccupancy.prints")[0]
|
||||
: occupancyType.occupancyTypePrints[0];
|
||||
lotOccupancy.printEJS = (
|
||||
occupancyType.occupancyTypePrints ?? []
|
||||
).includes('*')
|
||||
? configFunctions.getProperty('settings.lotOccupancy.prints')[0]
|
||||
: occupancyType.occupancyTypePrints![0]
|
||||
}
|
||||
|
||||
if (options.includeOccupants) {
|
||||
lotOccupancy.lotOccupancyOccupants = getLotOccupancyOccupants(
|
||||
lotOccupancy.lotOccupancyId,
|
||||
lotOccupancy.lotOccupancyId!,
|
||||
database
|
||||
);
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!connectedDatabase) {
|
||||
database.close();
|
||||
database.close()
|
||||
}
|
||||
|
||||
return {
|
||||
count,
|
||||
lotOccupancies
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
export default getLotOccupancies;
|
||||
export default getLotOccupancies
|
||||
|
|
|
|||
Loading…
Reference in New Issue