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