import mongoose from "mongoose"; const permitsModel = mongoose.model( "permit", new mongoose.Schema( { tenantId: { type: String, required: true, }, pid: { type: String, unique: true, }, permitNumber: String, county: Object, client: { type: mongoose.Types.ObjectId, ref: "organization", }, clientData: Object, permitDate: Date, stage: new mongoose.Schema( { pipeline: Array, currentStage: Number, }, { _id: false } ), status: String, manualStatus: String, assignedTo: { type: mongoose.Types.ObjectId, ref: "user", }, link: String, address: Object, recordType: String, description: String, applicationDetails: Object, applicationInfo: Object, applicationInfoTable: Object, conditions: Array, ownerDetails: String, parcelInfo: Object, paymentData: Object, professionalsList: Array, inspections: Object, createdAt: Date, createdBy: { type: mongoose.Types.ObjectId, ref: "user", }, newProcessingStatus: Array, newPayment: Array, newConditions: Array, professionals: Object, recordId: String, relatedRecords: Object, accelaStatus: String, openDate: Date, lastUpdateDate: Date, statusUpdated: Date, }, { strict: false } ) ); const processedModel = mongoose.model( "processed", new mongoose.Schema( { tenantId: { type: String, required: true, }, pid: { type: String, unique: true, }, permitNumber: String, county: Object, client: { type: mongoose.Types.ObjectId, ref: "organization", }, clientData: Object, permitDate: Date, stage: new mongoose.Schema( { pipeline: Array, currentStage: Number, }, { _id: false } ), status: String, manualStatus: String, assignedTo: { type: mongoose.Types.ObjectId, ref: "user", }, link: String, address: Object, recordType: String, description: String, applicationDetails: Object, applicationInfo: Object, applicationInfoTable: Object, conditions: Array, ownerDetails: String, parcelInfo: Object, paymentData: Object, professionalsList: Array, inspections: Object, createdAt: Date, createdBy: { type: mongoose.Types.ObjectId, ref: "user", }, newProcessingStatus: Array, newPayment: Array, newConditions: Array, professionals: Object, recordId: String, relatedRecords: Object, accelaStatus: String, openDate: Date, lastUpdateDate: Date, statusUpdated: Date, transferDate: Date, }, { strict: false } ), "processed" ); const notifModel = mongoose.model( "notification", new mongoose.Schema( { createdAt: Date, }, { strict: false } ) ); (async () => { console.log(new Date().toISOString() + " Started Pasco Archive script..."); await mongoose.connect(process.env.DB_URI); const processedPermits = await permitsModel.find({ $and: [{ "county.pid": "bibmdcutwwb7e3d" }, { status: "Permit Issued" }], }); console.log(`Found ${processedPermits.length} to archive`); let count = 0; for (const permit of processedPermits) { await processedModel.create({ tenantId: permit.tenantId, pid: permit.pid, permitNumber: permit.permitNumber, county: permit.county, client: permit.client, clientData: permit.clientData, status: permit.status, manualStatus: "Issued", assignedTo: permit.assignedTo, link: permit.link, address: permit.address, recordType: permit.recordType, description: permit.description, createdAt: permit.createdAt, createdBy: permit.createdBy, newProcessingStatus: permit.newProcessingStatus, newPayment: permit.newPayment, newConditions: permit.newConditions, professionals: permit.professionals, recordId: permit.recordId, relatedRecords: permit.relatedRecords, accelaStatus: permit.accelaStatus, openDate: permit.openDate, lastUpdateDate: permit.lastUpdateDate, statusUpdated: permit.statusUpdated, transferDate: new Date(), }); await permit.deleteOne(); count++; } console.log(`${count} permits archived`); const deletedRecords = await notifModel.deleteMany({ $and: [{ "county.pid": "bibmdcutwwb7e3d" }, { status: "Permit Issued" }], }); console.log(`${deletedRecords.deletedCount} notifications deleted`); await mongoose.connection.close(); })().catch((err) => console.log(err));