@chevre/domain
Version:
Chevre Domain Library for Node.js
80 lines (69 loc) • 2.77 kB
text/typescript
// 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);