diff --git a/helpers/lotOccupancyDB/addFeeCategory.js b/helpers/lotOccupancyDB/addFeeCategory.js index 02293e37..1a479967 100644 --- a/helpers/lotOccupancyDB/addFeeCategory.js +++ b/helpers/lotOccupancyDB/addFeeCategory.js @@ -1,16 +1,6 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { addRecord } from "./addRecord.js"; export function addFeeCategory(feeCategoryForm, requestSession) { - const database = sqlite(databasePath); - const rightNowMillis = Date.now(); - const result = database - .prepare(`insert into FeeCategories ( - feeCategory, orderNumber, - recordCreate_userName, recordCreate_timeMillis, - recordUpdate_userName, recordUpdate_timeMillis) - values (?, ?, ?, ?, ?, ?)`) - .run(feeCategoryForm.feeCategory, feeCategoryForm.orderNumber || -1, requestSession.user.userName, rightNowMillis, requestSession.user.userName, rightNowMillis); - database.close(); - return result.lastInsertRowid; + const feeCategoryId = addRecord("FeeCategories", feeCategoryForm.feeCategory, feeCategoryForm.orderNumber || -1, requestSession); + return feeCategoryId; } export default addFeeCategory; diff --git a/helpers/lotOccupancyDB/addFeeCategory.ts b/helpers/lotOccupancyDB/addFeeCategory.ts index 71febad1..6f6386f0 100644 --- a/helpers/lotOccupancyDB/addFeeCategory.ts +++ b/helpers/lotOccupancyDB/addFeeCategory.ts @@ -1,5 +1,4 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { addRecord } from "./addRecord.js"; import type * as recordTypes from "../../types/recordTypes"; @@ -12,30 +11,14 @@ export function addFeeCategory( feeCategoryForm: AddFeeCategoryForm, requestSession: recordTypes.PartialSession ): number { - const database = sqlite(databasePath); + const feeCategoryId = addRecord( + "FeeCategories", + feeCategoryForm.feeCategory, + feeCategoryForm.orderNumber || -1, + requestSession + ); - const rightNowMillis = Date.now(); - - const result = database - .prepare( - `insert into FeeCategories ( - feeCategory, orderNumber, - recordCreate_userName, recordCreate_timeMillis, - recordUpdate_userName, recordUpdate_timeMillis) - values (?, ?, ?, ?, ?, ?)` - ) - .run( - feeCategoryForm.feeCategory, - feeCategoryForm.orderNumber || -1, - requestSession.user.userName, - rightNowMillis, - requestSession.user.userName, - rightNowMillis - ); - - database.close(); - - return result.lastInsertRowid as number; + return feeCategoryId; } export default addFeeCategory; diff --git a/helpers/lotOccupancyDB/addLotStatus.js b/helpers/lotOccupancyDB/addLotStatus.js index 6379a841..693d3d55 100644 --- a/helpers/lotOccupancyDB/addLotStatus.js +++ b/helpers/lotOccupancyDB/addLotStatus.js @@ -1,18 +1,8 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; import { clearLotStatusesCache } from "../functions.cache.js"; +import { addRecord } from "./addRecord.js"; export function addLotStatus(lotStatusForm, requestSession) { - const database = sqlite(databasePath); - const rightNowMillis = Date.now(); - const result = database - .prepare(`insert into LotStatuses ( - lotStatus, orderNumber, - recordCreate_userName, recordCreate_timeMillis, - recordUpdate_userName, recordUpdate_timeMillis) - values (?, ?, ?, ?, ?, ?)`) - .run(lotStatusForm.lotStatus, lotStatusForm.orderNumber || -1, requestSession.user.userName, rightNowMillis, requestSession.user.userName, rightNowMillis); - database.close(); + const lotStatusId = addRecord("LotStatuses", lotStatusForm.lotStatus, lotStatusForm.orderNumber || -1, requestSession); clearLotStatusesCache(); - return result.lastInsertRowid; + return lotStatusId; } export default addLotStatus; diff --git a/helpers/lotOccupancyDB/addLotStatus.ts b/helpers/lotOccupancyDB/addLotStatus.ts index 66c2cff9..594e03f9 100644 --- a/helpers/lotOccupancyDB/addLotStatus.ts +++ b/helpers/lotOccupancyDB/addLotStatus.ts @@ -1,9 +1,7 @@ -import sqlite from "better-sqlite3"; - -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { clearLotStatusesCache } from "../functions.cache.js"; +import { addRecord } from "./addRecord.js"; import type * as recordTypes from "../../types/recordTypes"; -import { clearLotStatusesCache } from "../functions.cache.js"; interface AddLotStatusForm { lotStatus: string; @@ -14,32 +12,16 @@ export function addLotStatus( lotStatusForm: AddLotStatusForm, requestSession: recordTypes.PartialSession ): number { - const database = sqlite(databasePath); - - const rightNowMillis = Date.now(); - - const result = database - .prepare( - `insert into LotStatuses ( - lotStatus, orderNumber, - recordCreate_userName, recordCreate_timeMillis, - recordUpdate_userName, recordUpdate_timeMillis) - values (?, ?, ?, ?, ?, ?)` - ) - .run( - lotStatusForm.lotStatus, - lotStatusForm.orderNumber || -1, - requestSession.user.userName, - rightNowMillis, - requestSession.user.userName, - rightNowMillis - ); - - database.close(); + const lotStatusId = addRecord( + "LotStatuses", + lotStatusForm.lotStatus, + lotStatusForm.orderNumber || -1, + requestSession + ); clearLotStatusesCache(); - return result.lastInsertRowid as number; + return lotStatusId; } export default addLotStatus; diff --git a/helpers/lotOccupancyDB/addLotType.js b/helpers/lotOccupancyDB/addLotType.js index 9a58685c..eed4c410 100644 --- a/helpers/lotOccupancyDB/addLotType.js +++ b/helpers/lotOccupancyDB/addLotType.js @@ -1,18 +1,8 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; import { clearLotTypesCache } from "../functions.cache.js"; +import { addRecord } from "./addRecord.js"; export function addLotType(lotTypeForm, requestSession) { - const database = sqlite(databasePath); - const rightNowMillis = Date.now(); - const result = database - .prepare(`insert into LotTypes ( - lotType, orderNumber, - recordCreate_userName, recordCreate_timeMillis, - recordUpdate_userName, recordUpdate_timeMillis) - values (?, ?, ?, ?, ?, ?)`) - .run(lotTypeForm.lotType, lotTypeForm.orderNumber || -1, requestSession.user.userName, rightNowMillis, requestSession.user.userName, rightNowMillis); - database.close(); + const lotTypeId = addRecord("LotTypes", lotTypeForm.lotType, lotTypeForm.orderNumber || -1, requestSession); clearLotTypesCache(); - return result.lastInsertRowid; + return lotTypeId; } export default addLotType; diff --git a/helpers/lotOccupancyDB/addLotType.ts b/helpers/lotOccupancyDB/addLotType.ts index 5c237932..2d36a8c2 100644 --- a/helpers/lotOccupancyDB/addLotType.ts +++ b/helpers/lotOccupancyDB/addLotType.ts @@ -1,8 +1,5 @@ -import sqlite from "better-sqlite3"; - -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; - import { clearLotTypesCache } from "../functions.cache.js"; +import { addRecord } from "./addRecord.js"; import type * as recordTypes from "../../types/recordTypes"; @@ -11,36 +8,17 @@ interface AddLotTypeForm { orderNumber?: number; } -export function addLotType( - lotTypeForm: AddLotTypeForm, - requestSession: recordTypes.PartialSession -): number { - const database = sqlite(databasePath); - - const rightNowMillis = Date.now(); - - const result = database - .prepare( - `insert into LotTypes ( - lotType, orderNumber, - recordCreate_userName, recordCreate_timeMillis, - recordUpdate_userName, recordUpdate_timeMillis) - values (?, ?, ?, ?, ?, ?)` - ) - .run( - lotTypeForm.lotType, - lotTypeForm.orderNumber || -1, - requestSession.user.userName, - rightNowMillis, - requestSession.user.userName, - rightNowMillis - ); - - database.close(); +export function addLotType(lotTypeForm: AddLotTypeForm, requestSession: recordTypes.PartialSession): number { + const lotTypeId = addRecord( + "LotTypes", + lotTypeForm.lotType, + lotTypeForm.orderNumber || -1, + requestSession + ); clearLotTypesCache(); - return result.lastInsertRowid as number; + return lotTypeId; } export default addLotType; diff --git a/helpers/lotOccupancyDB/addOccupancyType.js b/helpers/lotOccupancyDB/addOccupancyType.js index 0ba4a844..5a987cbf 100644 --- a/helpers/lotOccupancyDB/addOccupancyType.js +++ b/helpers/lotOccupancyDB/addOccupancyType.js @@ -1,18 +1,8 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; import { clearOccupancyTypesCache } from "../functions.cache.js"; +import { addRecord } from "./addRecord.js"; export function addOccupancyType(occupancyTypeForm, requestSession) { - const database = sqlite(databasePath); - const rightNowMillis = Date.now(); - const result = database - .prepare(`insert into OccupancyTypes ( - occupancyType, orderNumber, - recordCreate_userName, recordCreate_timeMillis, - recordUpdate_userName, recordUpdate_timeMillis) - values (?, ?, ?, ?, ?, ?)`) - .run(occupancyTypeForm.occupancyType, occupancyTypeForm.orderNumber || -1, requestSession.user.userName, rightNowMillis, requestSession.user.userName, rightNowMillis); - database.close(); + const occupancyTypeId = addRecord("OccupancyTypes", occupancyTypeForm.occupancyType, occupancyTypeForm.orderNumber || -1, requestSession); clearOccupancyTypesCache(); - return result.lastInsertRowid; + return occupancyTypeId; } export default addOccupancyType; diff --git a/helpers/lotOccupancyDB/addOccupancyType.ts b/helpers/lotOccupancyDB/addOccupancyType.ts index f35c6f42..0b093cb3 100644 --- a/helpers/lotOccupancyDB/addOccupancyType.ts +++ b/helpers/lotOccupancyDB/addOccupancyType.ts @@ -1,8 +1,5 @@ -import sqlite from "better-sqlite3"; - -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; - import { clearOccupancyTypesCache } from "../functions.cache.js"; +import { addRecord } from "./addRecord.js"; import type * as recordTypes from "../../types/recordTypes"; @@ -15,32 +12,16 @@ export function addOccupancyType( occupancyTypeForm: AddOccupancyTypeForm, requestSession: recordTypes.PartialSession ): number { - const database = sqlite(databasePath); - - const rightNowMillis = Date.now(); - - const result = database - .prepare( - `insert into OccupancyTypes ( - occupancyType, orderNumber, - recordCreate_userName, recordCreate_timeMillis, - recordUpdate_userName, recordUpdate_timeMillis) - values (?, ?, ?, ?, ?, ?)` - ) - .run( - occupancyTypeForm.occupancyType, - occupancyTypeForm.orderNumber || -1, - requestSession.user.userName, - rightNowMillis, - requestSession.user.userName, - rightNowMillis - ); - - database.close(); + const occupancyTypeId = addRecord( + "OccupancyTypes", + occupancyTypeForm.occupancyType, + occupancyTypeForm.orderNumber || -1, + requestSession + ); clearOccupancyTypesCache(); - return result.lastInsertRowid as number; + return occupancyTypeId; } export default addOccupancyType; diff --git a/helpers/lotOccupancyDB/addRecord.d.ts b/helpers/lotOccupancyDB/addRecord.d.ts new file mode 100644 index 00000000..833e8f2b --- /dev/null +++ b/helpers/lotOccupancyDB/addRecord.d.ts @@ -0,0 +1,4 @@ +import type * as recordTypes from "../../types/recordTypes"; +declare type RecordTable = "FeeCategories" | "LotStatuses" | "LotTypes" | "OccupancyTypes" | "WorkOrderMilestoneTypes" | "WorkOrderTypes"; +export declare function addRecord(recordTable: RecordTable, recordName: string, orderNumber: number, requestSession: recordTypes.PartialSession): number; +export {}; diff --git a/helpers/lotOccupancyDB/addRecord.js b/helpers/lotOccupancyDB/addRecord.js new file mode 100644 index 00000000..607bc9ba --- /dev/null +++ b/helpers/lotOccupancyDB/addRecord.js @@ -0,0 +1,22 @@ +import sqlite from "better-sqlite3"; +import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +const recordNameColumns = new Map(); +recordNameColumns.set("FeeCategories", "feeCategory"); +recordNameColumns.set("LotStatuses", "lotStatus"); +recordNameColumns.set("LotTypes", "lotType"); +recordNameColumns.set("OccupancyTypes", "occupancyType"); +recordNameColumns.set("WorkOrderMilestoneTypes", "workOrderMilestoneType"); +recordNameColumns.set("WorkOrderTypes", "workOrderType"); +export function addRecord(recordTable, recordName, orderNumber, requestSession) { + const database = sqlite(databasePath); + const rightNowMillis = Date.now(); + const result = database + .prepare(`insert into ${recordTable} ( + ${recordNameColumns.get(recordTable)}, orderNumber, + recordCreate_userName, recordCreate_timeMillis, + recordUpdate_userName, recordUpdate_timeMillis) + values (?, ?, ?, ?, ?, ?)`) + .run(recordName, orderNumber, requestSession.user.userName, rightNowMillis, requestSession.user.userName, rightNowMillis); + database.close(); + return result.lastInsertRowid; +} diff --git a/helpers/lotOccupancyDB/addRecord.ts b/helpers/lotOccupancyDB/addRecord.ts new file mode 100644 index 00000000..9fb45365 --- /dev/null +++ b/helpers/lotOccupancyDB/addRecord.ts @@ -0,0 +1,53 @@ +import sqlite from "better-sqlite3"; + +import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; + +import type * as recordTypes from "../../types/recordTypes"; + +type RecordTable = + | "FeeCategories" + | "LotStatuses" + | "LotTypes" + | "OccupancyTypes" + | "WorkOrderMilestoneTypes" + | "WorkOrderTypes"; + +const recordNameColumns: Map = new Map(); +recordNameColumns.set("FeeCategories", "feeCategory"); +recordNameColumns.set("LotStatuses", "lotStatus"); +recordNameColumns.set("LotTypes", "lotType"); +recordNameColumns.set("OccupancyTypes", "occupancyType"); +recordNameColumns.set("WorkOrderMilestoneTypes", "workOrderMilestoneType"); +recordNameColumns.set("WorkOrderTypes", "workOrderType"); + +export function addRecord( + recordTable: RecordTable, + recordName: string, + orderNumber: number, + requestSession: recordTypes.PartialSession +): number { + const database = sqlite(databasePath); + + const rightNowMillis = Date.now(); + + const result = database + .prepare( + `insert into ${recordTable} ( + ${recordNameColumns.get(recordTable)}, orderNumber, + recordCreate_userName, recordCreate_timeMillis, + recordUpdate_userName, recordUpdate_timeMillis) + values (?, ?, ?, ?, ?, ?)` + ) + .run( + recordName, + orderNumber, + requestSession.user.userName, + rightNowMillis, + requestSession.user.userName, + rightNowMillis + ); + + database.close(); + + return result.lastInsertRowid as number; +} diff --git a/helpers/lotOccupancyDB/addWorkOrderMilestoneType.js b/helpers/lotOccupancyDB/addWorkOrderMilestoneType.js index e2728b84..48c30af1 100644 --- a/helpers/lotOccupancyDB/addWorkOrderMilestoneType.js +++ b/helpers/lotOccupancyDB/addWorkOrderMilestoneType.js @@ -1,18 +1,8 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; import { clearWorkOrderMilestoneTypesCache } from "../functions.cache.js"; +import { addRecord } from "./addRecord.js"; export function addWorkOrderMilestoneType(workOrderMilestoneTypeForm, requestSession) { - const database = sqlite(databasePath); - const rightNowMillis = Date.now(); - const result = database - .prepare(`insert into WorkOrderMilestoneTypes ( - workOrderMilestoneType, orderNumber, - recordCreate_userName, recordCreate_timeMillis, - recordUpdate_userName, recordUpdate_timeMillis) - values (?, ?, ?, ?, ?, ?)`) - .run(workOrderMilestoneTypeForm.workOrderMilestoneType, workOrderMilestoneTypeForm.orderNumber || -1, requestSession.user.userName, rightNowMillis, requestSession.user.userName, rightNowMillis); - database.close(); + const workOrderMilestoneId = addRecord("WorkOrderMilestoneTypes", workOrderMilestoneTypeForm.workOrderMilestoneType, workOrderMilestoneTypeForm.orderNumber || -1, requestSession); clearWorkOrderMilestoneTypesCache(); - return result.lastInsertRowid; + return workOrderMilestoneId; } export default addWorkOrderMilestoneType; diff --git a/helpers/lotOccupancyDB/addWorkOrderMilestoneType.ts b/helpers/lotOccupancyDB/addWorkOrderMilestoneType.ts index e94be6a3..fef423a5 100644 --- a/helpers/lotOccupancyDB/addWorkOrderMilestoneType.ts +++ b/helpers/lotOccupancyDB/addWorkOrderMilestoneType.ts @@ -1,8 +1,5 @@ -import sqlite from "better-sqlite3"; - -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; - import { clearWorkOrderMilestoneTypesCache } from "../functions.cache.js"; +import { addRecord } from "./addRecord.js"; import type * as recordTypes from "../../types/recordTypes"; @@ -15,32 +12,16 @@ export function addWorkOrderMilestoneType( workOrderMilestoneTypeForm: AddWorkOrderMilestoneTypeForm, requestSession: recordTypes.PartialSession ): number { - const database = sqlite(databasePath); - - const rightNowMillis = Date.now(); - - const result = database - .prepare( - `insert into WorkOrderMilestoneTypes ( - workOrderMilestoneType, orderNumber, - recordCreate_userName, recordCreate_timeMillis, - recordUpdate_userName, recordUpdate_timeMillis) - values (?, ?, ?, ?, ?, ?)` - ) - .run( - workOrderMilestoneTypeForm.workOrderMilestoneType, - workOrderMilestoneTypeForm.orderNumber || -1, - requestSession.user.userName, - rightNowMillis, - requestSession.user.userName, - rightNowMillis - ); - - database.close(); + const workOrderMilestoneId = addRecord( + "WorkOrderMilestoneTypes", + workOrderMilestoneTypeForm.workOrderMilestoneType, + workOrderMilestoneTypeForm.orderNumber || -1, + requestSession + ); clearWorkOrderMilestoneTypesCache(); - return result.lastInsertRowid as number; + return workOrderMilestoneId; } export default addWorkOrderMilestoneType; diff --git a/helpers/lotOccupancyDB/addWorkOrderType.js b/helpers/lotOccupancyDB/addWorkOrderType.js index 53660d67..03c19913 100644 --- a/helpers/lotOccupancyDB/addWorkOrderType.js +++ b/helpers/lotOccupancyDB/addWorkOrderType.js @@ -1,18 +1,8 @@ -import sqlite from "better-sqlite3"; -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; import { clearWorkOrderTypesCache } from "../functions.cache.js"; +import { addRecord } from "./addRecord.js"; export function addWorkOrderType(workOrderTypeForm, requestSession) { - const database = sqlite(databasePath); - const rightNowMillis = Date.now(); - const result = database - .prepare(`insert into WorkOrderTypes ( - workOrderType, orderNumber, - recordCreate_userName, recordCreate_timeMillis, - recordUpdate_userName, recordUpdate_timeMillis) - values (?, ?, ?, ?, ?, ?)`) - .run(workOrderTypeForm.workOrderType, workOrderTypeForm.orderNumber || -1, requestSession.user.userName, rightNowMillis, requestSession.user.userName, rightNowMillis); - database.close(); + const workOrderTypeId = addRecord("WorkOrderTypes", workOrderTypeForm.workOrderType, workOrderTypeForm.orderNumber || -1, requestSession); clearWorkOrderTypesCache(); - return result.lastInsertRowid; + return workOrderTypeId; } export default addWorkOrderType; diff --git a/helpers/lotOccupancyDB/addWorkOrderType.ts b/helpers/lotOccupancyDB/addWorkOrderType.ts index 7e6e64a9..ae8a2a46 100644 --- a/helpers/lotOccupancyDB/addWorkOrderType.ts +++ b/helpers/lotOccupancyDB/addWorkOrderType.ts @@ -1,8 +1,5 @@ -import sqlite from "better-sqlite3"; - -import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; - import { clearWorkOrderTypesCache } from "../functions.cache.js"; +import { addRecord } from "./addRecord.js"; import type * as recordTypes from "../../types/recordTypes"; @@ -15,32 +12,16 @@ export function addWorkOrderType( workOrderTypeForm: AddWorkOrderTypeForm, requestSession: recordTypes.PartialSession ): number { - const database = sqlite(databasePath); - - const rightNowMillis = Date.now(); - - const result = database - .prepare( - `insert into WorkOrderTypes ( - workOrderType, orderNumber, - recordCreate_userName, recordCreate_timeMillis, - recordUpdate_userName, recordUpdate_timeMillis) - values (?, ?, ?, ?, ?, ?)` - ) - .run( - workOrderTypeForm.workOrderType, - workOrderTypeForm.orderNumber || -1, - requestSession.user.userName, - rightNowMillis, - requestSession.user.userName, - rightNowMillis - ); - - database.close(); + const workOrderTypeId = addRecord( + "WorkOrderTypes", + workOrderTypeForm.workOrderType, + workOrderTypeForm.orderNumber || -1, + requestSession + ); clearWorkOrderTypesCache(); - return result.lastInsertRowid as number; + return workOrderTypeId; } export default addWorkOrderType;