// 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);
const memberId = 'xxx';

async function main() {
    await mongoose.connect(<string>process.env.MONGOLAB_URI);

    const memberRepo = await chevre.repository.Member.createInstance(mongoose.connection);
    const roleRepo = await chevre.repository.Role.createInstance(mongoose.connection);

    let now: Date;

    now = new Date();
    const searchPermissionsResult = await (await chevre.service.iam.createService()).searchPermissions({
        project: { id: PROJECT_ID },
        member: {
            id: memberId,
            memberOf: {
                id: PROJECT_ID,
                typeOf: chevre.factory.organizationType.Project
            }
        }
    })({
        member: memberRepo,
        role: roleRepo
    });
    console.log('time cost:', moment()
        .diff(now));

    console.log(searchPermissionsResult);
    console.log(searchPermissionsResult.permissions.length);

    // console.log(aggregateRoleNamesResult);
    // console.log(aggregateRoleNamesResult.length);
    // console.log(aggregatePermissionsResult);
    // console.log(aggregatePermissionsResult.length);
}

main()
    .then(console.log)
    .catch(console.error);
