// tslint:disable:no-console
import * as mongoose from 'mongoose';

import { chevre } from '../../../../lib/index';

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

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

    const memberProgramRepo = await chevre.repository.MemberProgram.createInstance(mongoose.connection);

    const memberPrograms = await memberProgramRepo.projectMemberPrograms(
        {
            project: { id: { $eq: project.id } },
            identifier: { $eq: IDENTIFIER }
        }
    );
    console.log('docs:', memberPrograms);
    console.log(memberPrograms.length, 'docs found');

    if (memberPrograms.length > 0) {
        const memberProgram = memberPrograms[0];
        await memberProgramRepo.updateOne({
            project: { id: project.id },
            identifier: memberProgram.identifier,
            hostingOrganization: { id: 'xxx' },
            hasTiers: [
                { identifier: 'bronze' },
                { identifier: 'silver' },
                { identifier: 'gold' }
            ]
        });
        console.log('updated.');

        const tiers = await memberProgramRepo.projectMemberProgramTiers(
            {
                limit: 10,
                page: 1,
                project: { id: { $eq: project.id } },
                isTierOf: {
                    identifier: { $eq: memberProgram.identifier }
                }
            }
        );
        // tslint:disable-next-line:no-null-keyword
        console.dir(tiers, { depth: null });
        console.log(tiers.length, 'tiers found');
    }
}

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