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

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

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

const formatter = new Intl.NumberFormat('ja-JP');

// tslint:disable-next-line:max-func-body-length
async function main() {
    let startTime: [number, number] = process.hrtime();
    let diff: [number, number] = process.hrtime(startTime);
    let result: any;

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

    const offerCatalogRepo = await chevre.repository.OfferCatalog.createInstance(mongoose.connection);
    const offerCatalogItemRepo = await chevre.repository.OfferCatalogItem.createInstance(mongoose.connection);

    // startTime = process.hrtime();
    // result = await offerCatalogRepo.searchItemListElementById({
    //     id: 'blpc770py',
    //     limit: 100,
    //     page: 1
    // });
    // diff = process.hrtime(startTime);
    // console.log('diff:', [diff[0], formatter.format(diff[1])]);
    // console.log('result:', result);

    startTime = process.hrtime();
    result = await offerCatalogRepo.sliceItemListElementById({
        id: 'blpc770py',
        limit: 10,
        page: 1
    });
    diff = process.hrtime(startTime);
    console.log('diff:', [diff[0], formatter.format(diff[1])]);
    console.log('result:', result);

    startTime = process.hrtime();
    result = await offerCatalogItemRepo.sliceItemListElementById({
        id: '65669285c7b871dba60ed72e',
        limit: 10,
        page: 1
    });
    diff = process.hrtime(startTime);
    console.log('diff:', [diff[0], formatter.format(diff[1])]);
    console.log('result:', result);
}

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