// tslint:disable:no-implicit-dependencies no-console
import { chevre } from '../../../lib/index';

import * as  mongoose from 'mongoose';

const project = { id: String(process.env.PROJECT_ID) };

mongoose.Model.on('index', (...args) => {
    console.error('******** index event emitted. ********\n', args);
});

async function main() {
    await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });

    const limit = 100;
    const page = 1;
    const memberRepo = await chevre.repository.Member.createInstance(mongoose.connection);
    const members = await memberRepo.projectFieldsByProjectId(
        { id: project.id },
        {
            limit,
            page,
            member: {
                typeOf: {
                    // $eq: chevre.factory.creativeWorkType.WebApplication
                    // $eq: chevre.factory.personType.Person
                },
                memberOf: { typeOf: { $eq: chevre.factory.organizationType.Project } }
            }
        },
        []
    );
    console.log('members:', members);
    console.log(members.length, 'members found');

    const customerMembers = await memberRepo.searchCustomerMembers(
        {
            limit: 10,
            page: 1,
            sort: { 'member.id': chevre.factory.sortType.Ascending },
            project: { id: project.id },
            member: {
            }
        }
    );
    // tslint:disable-next-line:no-null-keyword
    console.dir(customerMembers, { depth: null });
    console.log(customerMembers.length, 'customerMembers found');
}

main()
    .then(() => {
        console.log('success!');
    })
    .catch(console.error);
