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