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

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

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

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

    const eventRepo = await chevre.repository.Event.createInstance(mongoose.connection);
    const productRepo = await chevre.repository.Product.createInstance(mongoose.connection);

    const event = (await eventRepo.projectEventFields(
        {
            id: { $eq: 'bm0f0cadm' },
            typeOf: chevre.factory.eventType.ScreeningEvent,
            project: { id: { $eq: project.id } }
        },
        ['offers.itemOffered.id']
    )).shift();
    console.log('event:', event);
    if (event === undefined) {
        throw new Error('event not found');
    }
    const productId = event.offers.itemOffered.id;
    if (typeof productId !== 'string') {
        throw new Error('offers.itemOffered.id undefined');
    }
    const catalogs = await productRepo.aggregateHasOfferCatalog(
        {
            id: productId,
            limit: 10,
            page: 1
        }
    );
    console.log(catalogs);
    console.log(catalogs.length);
}

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