sunrise-cms/helpers/lotOccupancyDB/cleanupDatabase.js

237 lines
13 KiB
JavaScript

import sqlite from "better-sqlite3";
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
import * as configFunctions from "../functions.config.js";
export function cleanupDatabase(requestSession) {
const database = sqlite(databasePath);
const rightNowMillis = Date.now();
const recordDelete_timeMillisMin = rightNowMillis -
configFunctions.getProperty("settings.adminCleanup.recordDeleteAgeDays") * 86400 * 1000;
let inactivedRecordCount = 0;
let purgedRecordCount = 0;
inactivedRecordCount += database
.prepare(`update WorkOrderComments
set recordDelete_userName = ?,
recordDelete_timeMillis = ?
where recordDelete_timeMillis is null
and workOrderId in (
select workOrderId from WorkOrders where recordDelete_timeMillis is not null)`)
.run(requestSession.user.userName, rightNowMillis).changes;
purgedRecordCount += database
.prepare("delete from WorkOrderComments where recordDelete_timeMillis <= ?")
.run(recordDelete_timeMillisMin).changes;
inactivedRecordCount += database
.prepare(`update WorkOrderLotOccupancies
set recordDelete_userName = ?,
recordDelete_timeMillis = ?
where recordDelete_timeMillis is null
and workOrderId in (
select workOrderId from WorkOrders where recordDelete_timeMillis is not null)`)
.run(requestSession.user.userName, rightNowMillis).changes;
purgedRecordCount += database
.prepare("delete from WorkOrderLotOccupancies where recordDelete_timeMillis <= ?")
.run(recordDelete_timeMillisMin).changes;
inactivedRecordCount += database
.prepare(`update WorkOrderLots
set recordDelete_userName = ?,
recordDelete_timeMillis = ?
where recordDelete_timeMillis is null
and workOrderId in (
select workOrderId from WorkOrders where recordDelete_timeMillis is not null)`)
.run(requestSession.user.userName, rightNowMillis).changes;
purgedRecordCount += database
.prepare("delete from WorkOrderLots where recordDelete_timeMillis <= ?")
.run(recordDelete_timeMillisMin).changes;
inactivedRecordCount += database
.prepare(`update WorkOrderMilestones
set recordDelete_userName = ?,
recordDelete_timeMillis = ?
where recordDelete_timeMillis is null
and workOrderId in (
select workOrderId from WorkOrders where recordDelete_timeMillis is not null)`)
.run(requestSession.user.userName, rightNowMillis).changes;
purgedRecordCount += database
.prepare("delete from WorkOrderMilestones where recordDelete_timeMillis <= ?")
.run(recordDelete_timeMillisMin).changes;
purgedRecordCount += database
.prepare(`delete from WorkOrders
where recordDelete_timeMillis <= ?
and workOrderId not in (select workOrderId from WorkOrderComments)
and workOrderId not in (select workOrderId from WorkOrderLotOccupancies)
and workOrderId not in (select workOrderId from WorkOrderLots)
and workOrderId not in (select workOrderId from WorkOrderMilestones)`)
.run(recordDelete_timeMillisMin).changes;
purgedRecordCount += database
.prepare(`delete from WorkOrderMilestoneTypes
where recordDelete_timeMillis <= ?
and workOrderMilestoneTypeId not in (
select workOrderMilestoneTypeId from WorkOrderMilestones)`)
.run(recordDelete_timeMillisMin).changes;
purgedRecordCount += database
.prepare(`delete from WorkOrderTypes
where recordDelete_timeMillis <= ?
and workOrderTypeId not in (select workOrderTypeId from WorkOrders)`)
.run(recordDelete_timeMillisMin).changes;
inactivedRecordCount += database
.prepare(`update LotOccupancyComments
set recordDelete_userName = ?,
recordDelete_timeMillis = ?
where recordDelete_timeMillis is null
and lotOccupancyId in (
select lotOccupancyId from LotOccupancies where recordDelete_timeMillis is not null)`)
.run(requestSession.user.userName, rightNowMillis).changes;
purgedRecordCount += database
.prepare("delete from LotOccupancyComments where recordDelete_timeMillis <= ?")
.run(recordDelete_timeMillisMin).changes;
inactivedRecordCount += database
.prepare(`update LotOccupancyFields
set recordDelete_userName = ?,
recordDelete_timeMillis = ?
where recordDelete_timeMillis is null
and lotOccupancyId in (select lotOccupancyId from LotOccupancies where recordDelete_timeMillis is not null)`)
.run(requestSession.user.userName, rightNowMillis).changes;
purgedRecordCount += database
.prepare("delete from LotOccupancyFields where recordDelete_timeMillis <= ?")
.run(recordDelete_timeMillisMin).changes;
inactivedRecordCount += database
.prepare(`update LotOccupancyOccupants
set recordDelete_userName = ?,
recordDelete_timeMillis = ?
where recordDelete_timeMillis is null
and lotOccupancyId in (select lotOccupancyId from LotOccupancies where recordDelete_timeMillis is not null)`)
.run(requestSession.user.userName, rightNowMillis).changes;
purgedRecordCount += database
.prepare("delete from LotOccupancyOccupants where recordDelete_timeMillis <= ?")
.run(recordDelete_timeMillisMin).changes;
purgedRecordCount += database
.prepare("delete from LotOccupancyFees where recordDelete_timeMillis <= ?")
.run(recordDelete_timeMillisMin).changes;
purgedRecordCount += database
.prepare("delete from LotOccupancyTransactions where recordDelete_timeMillis <= ?")
.run(recordDelete_timeMillisMin).changes;
purgedRecordCount += database
.prepare(`delete from LotOccupancies
where recordDelete_timeMillis <= ?
and lotOccupancyId not in (select lotOccupancyId from LotOccupancyComments)
and lotOccupancyId not in (select lotOccupancyId from LotOccupancyFees)
and lotOccupancyId not in (select lotOccupancyId from LotOccupancyFields)
and lotOccupancyId not in (select lotOccupancyId from LotOccupancyOccupants)
and lotOccupancyId not in (select lotOccupancyId from LotOccupancyTransactions)
and lotOccupancyId not in (select lotOccupancyId from WorkOrderLotOccupancies)`)
.run(recordDelete_timeMillisMin).changes;
inactivedRecordCount += database
.prepare(`update Fees
set recordDelete_userName = ?,
recordDelete_timeMillis = ?
where recordDelete_timeMillis is null
and feeCategoryId in (select feeCategoryId from FeeCategories where recordDelete_timeMillis is not null)`)
.run(requestSession.user.userName, rightNowMillis).changes;
purgedRecordCount += database
.prepare(`delete from Fees
where recordDelete_timeMillis <= ?
and feeId not in (select feeId from LotOccupancyFees)`)
.run(recordDelete_timeMillisMin).changes;
purgedRecordCount += database
.prepare(`delete from FeeCategories
where recordDelete_timeMillis <= ?
and feeCategoryId not in (select feeCategoryId from Fees)`)
.run(recordDelete_timeMillisMin).changes;
inactivedRecordCount += database
.prepare(`update OccupancyTypeFields
set recordDelete_userName = ?,
recordDelete_timeMillis = ?
where recordDelete_timeMillis is null
and occupancyTypeId in (select occupancyTypeId from OccupancyTypes where recordDelete_timeMillis is not null)`)
.run(requestSession.user.userName, rightNowMillis).changes;
purgedRecordCount += database
.prepare(`delete from OccupancyTypeFields
where recordDelete_timeMillis <= ?
and occupancyTypeFieldId not in (select occupancyTypeFieldId from LotOccupancyFields)`)
.run(recordDelete_timeMillisMin).changes;
inactivedRecordCount += database
.prepare(`update OccupancyTypePrints
set recordDelete_userName = ?,
recordDelete_timeMillis = ?
where recordDelete_timeMillis is null
and occupancyTypeId in (select occupancyTypeId from OccupancyTypes where recordDelete_timeMillis is not null)`)
.run(requestSession.user.userName, rightNowMillis).changes;
purgedRecordCount += database
.prepare("delete from OccupancyTypePrints where recordDelete_timeMillis <= ?")
.run(recordDelete_timeMillisMin).changes;
purgedRecordCount += database
.prepare(`delete from OccupancyTypes
where recordDelete_timeMillis <= ?
and occupancyTypeId not in (select occupancyTypeId from OccupancyTypeFields)
and occupancyTypeId not in (select occupancyTypeId from OccupancyTypePrints)
and occupancyTypeId not in (select occupancyTypeId from LotOccupancies)
and occupancyTypeId not in (select occupancyTypeId from Fees)`)
.run(recordDelete_timeMillisMin).changes;
purgedRecordCount += database
.prepare(`delete from LotOccupantTypes
where recordDelete_timeMillis <= ?
and lotOccupantTypeId not in (select lotOccupantTypeId from LotOccupancyOccupants)`)
.run(recordDelete_timeMillisMin).changes;
inactivedRecordCount += database
.prepare(`update LotComments
set recordDelete_userName = ?,
recordDelete_timeMillis = ?
where recordDelete_timeMillis is null
and lotId in (select lotId from Lots where recordDelete_timeMillis is not null)`)
.run(requestSession.user.userName, rightNowMillis).changes;
purgedRecordCount += database
.prepare("delete from LotComments where recordDelete_timeMillis <= ?")
.run(recordDelete_timeMillisMin).changes;
inactivedRecordCount += database
.prepare(`update LotFields
set recordDelete_userName = ?,
recordDelete_timeMillis = ?
where recordDelete_timeMillis is null
and lotId in (select lotId from Lots where recordDelete_timeMillis is not null)`)
.run(requestSession.user.userName, rightNowMillis).changes;
purgedRecordCount += database
.prepare("delete from LotFields where recordDelete_timeMillis <= ?")
.run(recordDelete_timeMillisMin).changes;
inactivedRecordCount += database
.prepare(`update Lots
set recordDelete_userName = ?,
recordDelete_timeMillis = ?
where recordDelete_timeMillis is null
and mapId in (select mapId from Maps where recordDelete_timeMillis is not null)`)
.run(requestSession.user.userName, rightNowMillis).changes;
purgedRecordCount += database
.prepare(`delete from Lots
where recordDelete_timeMillis <= ?
and lotId not in (select lotId from LotComments)
and lotId not in (select lotId from LotFields)
and lotId not in (select lotId from LotOccupancies)
and lotId not in (select lotId from WorkOrderLots)`)
.run(recordDelete_timeMillisMin).changes;
purgedRecordCount += database
.prepare(`delete from LotStatuses
where recordDelete_timeMillis <= ?
and lotStatusId not in (select lotStatusId from Lots)`)
.run(recordDelete_timeMillisMin).changes;
inactivedRecordCount += database
.prepare(`update LotTypeFields
set recordDelete_userName = ?,
recordDelete_timeMillis = ?
where recordDelete_timeMillis is null
and lotTypeId in (select lotTypeId from LotTypes where recordDelete_timeMillis is not null)`)
.run(requestSession.user.userName, rightNowMillis).changes;
purgedRecordCount += database
.prepare(`delete from LotTypeFields
where recordDelete_timeMillis <= ?
and lotTypeFieldId not in (select lotTypeFieldId from LotFields)`)
.run(recordDelete_timeMillisMin).changes;
purgedRecordCount += database
.prepare(`delete from LotTypes
where recordDelete_timeMillis <= ?
and lotTypeId not in (select lotTypeId from Lots)`)
.run(recordDelete_timeMillisMin).changes;
database.close();
return {
inactivedRecordCount,
purgedRecordCount
};
}
export default cleanupDatabase;