UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

80 lines (69 loc) 2.77 kB
// tslint:disable:no-console import * as moment from 'moment'; import * as mongoose from 'mongoose'; import { chevre } from '../../../lib/index'; // const project = { id: String(process.env.PROJECT_ID) }; // tslint:disable-next-line:max-func-body-length async function main() { await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false }); const ownershipInfoRepo = await chevre.repository.OwnershipInfo.createInstance(mongoose.connection); const ownedThroughLt = moment() .add(-1, 'year') .toDate(); const cursor = ownershipInfoRepo.getCursor( { ownedThrough: { $exists: true, $lt: ownedThroughLt } }, { } ); console.log('infos found'); let i = 0; let updateCount = 0; await cursor.eachAsync(async (doc) => { i += 1; const ownershipInfo: Pick< chevre.factory.ownershipInfo.IOwnershipInfo<chevre.factory.ownershipInfo.IGood>, 'id' | 'project' | 'identifier' | 'ownedBy' | 'ownedFrom' | 'ownedThrough' > = doc.toObject(); let noNeedToDelete = true; let ownedById: string | undefined; if (ownershipInfo.ownedThrough instanceof Date && moment(ownedThroughLt) .isAfter(moment(ownershipInfo.ownedThrough))) { noNeedToDelete = false; ownedById = (Array.isArray(ownershipInfo.ownedBy)) ? ownershipInfo.ownedBy[0].id : ownershipInfo.ownedBy.id; } if (noNeedToDelete) { console.log( 'noNeedToDelete.', ownershipInfo.project.id, ownershipInfo.identifier, ownershipInfo.id, ownershipInfo.ownedFrom, ownershipInfo.ownedThrough, i, updateCount); } else { console.log( 'deleting...', ownershipInfo.project.id, ownershipInfo.identifier, ownershipInfo.id, ownershipInfo.ownedFrom, ownershipInfo.ownedThrough, i, updateCount); if (typeof ownedById === 'string') { // await ownershipInfoRepo.deleteByIdAndOwnedById({ // project: { id: ownershipInfo.project.id }, // id: ownershipInfo.id, // ownedBy: { id: ownedById } // }); } updateCount += 1; console.log( 'deleted.', ownershipInfo.project.id, ownershipInfo.identifier, ownershipInfo.id, ownershipInfo.ownedFrom, ownershipInfo.ownedThrough, i, updateCount); } }); console.log(i, 'infos checked'); console.log(updateCount, 'infos updated'); } main() .then() .catch(console.error);