UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

70 lines (57 loc) 2.17 kB
// tslint:disable:no-console import * as mongoose from 'mongoose'; import { chevre } from '../../../lib/index'; // const project = { id: String(process.env.PROJECT_ID) }; // const excludedProject = { id: String(process.env.EXCLUDED_PROJECT_ID) }; // tslint:disable-next-line:max-func-body-length async function main() { await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false }); const identityRepo = await chevre.repository.Identity.createInstance(mongoose.connection); const cursor = identityRepo.getCursor( { // _id: { $eq: '67de46777ec0510590b68922' } }, { _id: 1, about: 1, project: 1, typeOf: 1, issuedBy: 1 } ); console.log('docs found'); let i = 0; let updateCount = 0; await cursor.eachAsync(async (doc) => { i += 1; const identity: Pick< chevre.factory.creativeWork.certification.webApplication.ICertification, 'about' | 'project' | 'typeOf' | 'id' | 'issuedBy' > = doc.toObject(); const issuedBy = identity.issuedBy; const numIssuedBy = (Array.isArray(identity.issuedBy)) ? identity.issuedBy.length : 1; // console.log( // 'alreadyMigrated?', identity.project.id, identity.about.id, numIssuedBy, i); const alreadyMigrated = Array.isArray(issuedBy); if (alreadyMigrated) { console.log( 'already migrated.', identity.project.id, identity.about.id, identity.id, numIssuedBy, i); } else { if (typeof identity.id !== 'string') { throw new Error(`id undefined ${identity.id}`); } await identityRepo.updateIssuedBy2array({ id: identity.id, issuedBy: [issuedBy] }); updateCount += 1; console.log( 'updated.', identity.project.id, identity.about.id, identity.id, numIssuedBy, i); } }); console.log(i, 'docs checked'); console.log(updateCount, 'docs updated'); } main() .then() .catch(console.error);