@chevre/domain
Version:
Chevre Domain Library for Node.js
98 lines (87 loc) • 3.73 kB
text/typescript
// tslint:disable:no-console
import * as moment from 'moment-timezone';
import * as mongoose from 'mongoose';
import * as redis from 'redis';
import { PendingReservationRepo } from '../../../../lib/chevre/repo/pendingReservation';
// import { chevre } from '../../../../lib/index';
mongoose.Model.on('index', (...args) => {
console.error('******** index event emitted. ********\n', args);
});
const today = moment()
.tz('Asia/Tokyo')
.format('YYYYMMDD');
const project = { id: String(process.env.PROJECT_ID) };
const eventId = `sampleEventId${today}:03`;
// const eventId = 'bma1pcxs0';
const eventStartDate = new Date('2025-05-01T00:00:00Z');
// const seatSection = 'SampleSectionNameXXXXXXXXXXXXXXXXXXX';
const seatSection = 'Default';
// tslint:disable-next-line:no-magic-numbers prefer-array-literal
const allSeatNumbers = [...Array(10000)].map((__, seatKey) => `SampleSeatNumber-${seatKey}`);
// const allSeatNumbers = [...Array(10000)].map((__, seatKey) => `A-${seatKey}`);
const client = redis.createClient<redis.RedisDefaultModules, Record<string, never>, Record<string, never>>({
socket: {
port: Number(<string>process.env.REDIS_PORT),
host: <string>process.env.REDIS_HOST
},
password: <string>process.env.REDIS_KEY
})
.on('error', (err) => {
// eslint-disable-next-line no-console
console.error('createDefaultRedisClient: client onError:', err);
// reject(err);
});
client.connect();
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 stockHolderRepo = await chevre.repository.StockHolder.createInstance(client, mongoose.connection);
const pendingReservationRepo = new PendingReservationRepo(mongoose.connection);
result = await pendingReservationRepo.countUnavailableOffers({
project: { id: project.id },
event: {
id: eventId,
startDate: eventStartDate,
hasTicketedSeat: true
}
});
console.log('countUnavailableOffersResult:', result);
startTime = process.hrtime();
const searchHoldersResult = await pendingReservationRepo.searchHolders({
project: { id: project.id },
eventId,
startDate: eventStartDate,
hasTicketedSeat: true,
offers: [
// tslint:disable-next-line:no-magic-numbers
...allSeatNumbers.slice(0, 10)
.map((seatNumber) => ({ seatSection, seatNumber }))
// { seatSection, seatNumber: 'SampleSeatNumber-7341' }
]
});
diff = process.hrtime(startTime);
console.log('searchHoldersResult:', searchHoldersResult, searchHoldersResult.length);
console.log('diff:', [diff[0], formatter.format(diff[1])]);
// startTime = process.hrtime();
// const searchHolders2Result = await pendingReservationRepo.searchHolders2({
// project: { id: project.id },
// eventId,
// startDate: eventStartDate,
// hasTicketedSeat: true,
// offers: [
// // tslint:disable-next-line:no-magic-numbers
// ...allSeatNumbers.slice(0, 10)
// .map((seatNumber) => ({ seatSection, seatNumber }))
// ]
// });
// diff = process.hrtime(startTime);
// console.log('searchHolders2:', searchHolders2Result, searchHolders2Result.length);
// console.log('diff:', [diff[0], formatter.format(diff[1])]);
}
main()
.then(console.log)
.catch(console.error);