// tslint:disable:no-console
import * as mongoose from 'mongoose';
import { chevre } from '../../../../lib/index';

const project = { id: String(process.env.PROJECT_ID) };
mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });

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;

    const pendingReservationRepo = await chevre.repository.PendingReservation.createInstance(mongoose.connection);

    startTime = process.hrtime();
    result = await pendingReservationRepo.projectFields({
        limit: 10,
        page: 1,
        project: { id: { $eq: project.id } }
        // reservationFor: { id: { $eq: 'bma31zpnv' } },
        // subReservation: { identifier: { $eq: 'Default:A-1' } },
        // reservationNumber: { $eq: '283714519921158' }
    });
    diff = process.hrtime(startTime);
    console.log('result:', result, result.length);
    console.log('diff:', [diff[0], formatter.format(diff[1])]);

    startTime = process.hrtime();
    result = await pendingReservationRepo.projectSubReservationByReservationNumber({
        project: { id: { $eq: project.id } },
        reservationNumber: { $eq: '863146502102826' }
    });
    diff = process.hrtime(startTime);
    console.log('result:', result, result.length);
    console.log('diff:', [diff[0], formatter.format(diff[1])]);
}

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