@chevre/domain
Version:
Chevre Domain Library for Node.js
453 lines (452 loc) • 13.3 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.modelName = exports.indexes = void 0;
exports.createSchema = createSchema;
const mongoose_1 = require("mongoose");
const writeConcern_1 = require("../writeConcern");
const settings_1 = require("../../../settings");
const modelName = 'Reservation';
exports.modelName = modelName;
const schemaDefinition = {
project: {
type: mongoose_1.SchemaTypes.Mixed,
required: true
},
provider: {
type: mongoose_1.SchemaTypes.Mixed,
required: true
},
_id: String,
typeOf: {
type: String,
required: true
},
additionalTicketText: String,
bookingAgent: mongoose_1.SchemaTypes.Mixed,
bookingTime: Date,
broker: mongoose_1.SchemaTypes.Mixed,
// cancelReservationUrl: String,
// checkinUrl: String,
// confirmReservationUrl: String,
modifiedTime: Date,
// modifyReservationUrl: String,
numSeats: Number,
previousReservationStatus: String,
price: mongoose_1.SchemaTypes.Mixed,
priceCurrency: String,
programMembershipUsed: mongoose_1.SchemaTypes.Mixed,
reservationFor: mongoose_1.SchemaTypes.Mixed,
reservationNumber: {
type: String,
required: true
},
reservationStatus: {
type: String,
required: true
},
reservedTicket: mongoose_1.SchemaTypes.Mixed,
subReservation: mongoose_1.SchemaTypes.Mixed,
underName: mongoose_1.SchemaTypes.Mixed,
checkedIn: { type: Boolean, default: false },
attended: { type: Boolean, default: false },
additionalProperty: mongoose_1.SchemaTypes.Mixed,
issuedThrough: mongoose_1.SchemaTypes.Mixed
};
const schemaOptions = {
autoIndex: settings_1.MONGO_AUTO_INDEX,
autoCreate: false,
collection: 'reservations',
id: true,
read: 'primary',
writeConcern: writeConcern_1.writeConcern,
strict: true,
strictQuery: false,
timestamps: false, // 2024-07-02~
versionKey: false, // 2024-07-02~
toJSON: {
getters: false,
virtuals: false,
minimize: false,
versionKey: false
},
toObject: {
getters: false,
virtuals: true,
minimize: false,
versionKey: false
}
};
const indexes = [
[
{ bookingTime: -1 },
{ name: 'searchByBookingTime-v3' }
],
[
{ 'project.id': 1, bookingTime: -1 },
{ name: 'searchByProjectId-v20220721' }
],
[
{ 'provider.id': 1, bookingTime: -1 },
{ name: 'searchByProviderId' }
],
[
{ typeOf: 1, bookingTime: -1 },
{ name: 'searchByTypeOf-v3' }
],
[
{ reservationNumber: 1, bookingTime: -1 },
{ name: 'searchByReservationNumber-v3' }
],
[
{ reservationStatus: 1, bookingTime: -1 },
{ name: 'searchByReservationStatus-v3' }
],
[
{ checkedIn: 1, bookingTime: -1 },
{ name: 'searchByCheckedIn-v3' }
],
[
{ attended: 1, bookingTime: -1 },
{ name: 'searchByAttended-v3' }
],
[
{ useActionExists: 1, bookingTime: -1 },
{
name: 'searchByUseActionExists',
partialFilterExpression: {
useActionExists: { $exists: true }
}
}
],
[
{ additionalTicketText: 1, bookingTime: -1 },
{
name: 'searchByAdditionalTicketText-v3',
partialFilterExpression: {
additionalTicketText: { $exists: true }
}
}
],
[
{ additionalProperty: 1, bookingTime: -1 },
{
name: 'searchByAdditionalProperty-v3',
partialFilterExpression: {
additionalProperty: { $exists: true }
}
}
],
[
{ 'price.priceComponent.appliesToMovieTicket.identifier': 1, bookingTime: -1 },
{
name: 'searchByPriceComponentAppliesToMovieTicketIdentifier',
partialFilterExpression: {
'price.priceComponent.appliesToMovieTicket.identifier': { $exists: true }
}
}
],
[
{ 'reservationFor.typeOf': 1, bookingTime: -1 },
{
name: 'searchByReservationForTypeOf-v3',
partialFilterExpression: {
'reservationFor.typeOf': { $exists: true }
}
}
],
[
{ 'reservationFor.id': 1, bookingTime: -1 },
{
name: 'searchByReservationForId-v3',
partialFilterExpression: {
'reservationFor.id': { $exists: true }
}
}
],
[
{ 'reservationFor.location.id': 1, bookingTime: -1 },
{
name: 'searchByReservationForLocationId-v3',
partialFilterExpression: {
'reservationFor.location.id': { $exists: true }
}
}
],
[
{ 'reservationFor.location.branchCode': 1, bookingTime: -1 },
{
name: 'searchByReservationForLocationBranchCode-v3',
partialFilterExpression: {
'reservationFor.location.branchCode': { $exists: true }
}
}
],
[
{ 'reservationFor.startDate': 1, bookingTime: -1 },
{
name: 'searchByReservationForStartDate-v3',
partialFilterExpression: {
'reservationFor.startDate': { $exists: true }
}
}
],
[
{ 'reservationFor.endDate': 1, bookingTime: -1 },
{
name: 'searchByReservationForEndDate-v3',
partialFilterExpression: {
'reservationFor.endDate': { $exists: true }
}
}
],
[
{ 'reservationFor.superEvent.id': 1, bookingTime: -1 },
{
name: 'searchByReservationForSuperEventId-v3',
partialFilterExpression: {
'reservationFor.superEvent.id': { $exists: true }
}
}
],
[
{ 'reservationFor.superEvent.workPerformed.id': 1, bookingTime: -1 },
{
name: 'searchByReservationForSuperEventWorkPerformedId-v3',
partialFilterExpression: {
'reservationFor.superEvent.workPerformed.id': { $exists: true }
}
}
],
[
{ 'reservationFor.superEvent.workPerformed.identifier': 1, bookingTime: -1 },
{
name: 'searchByReservationForSuperEventWorkPerformedIdentifier-v3',
partialFilterExpression: {
'reservationFor.superEvent.workPerformed.identifier': { $exists: true }
}
}
],
[
{ 'reservationFor.superEvent.location.id': 1, bookingTime: -1 },
{
name: 'searchByReservationForSuperEventLocationId-v3',
partialFilterExpression: {
'reservationFor.superEvent.location.id': { $exists: true }
}
}
],
[
{ 'reservationFor.superEvent.location.branchCode': 1, bookingTime: -1 },
{
name: 'searchByReservationForSuperEventLocationBranchCode-v3',
partialFilterExpression: {
'reservationFor.superEvent.location.branchCode': { $exists: true }
}
}
],
[
{ 'reservedTicket.ticketedSeat.seatNumber': 1, bookingTime: -1 },
{
name: 'searchByReservedTicketTicketedSeatSeatNumber-v3',
partialFilterExpression: {
'reservedTicket.ticketedSeat.seatNumber': { $exists: true }
}
}
],
[
{ 'reservedTicket.ticketedSeat.seatRow': 1, bookingTime: -1 },
{
name: 'searchByReservedTicketTicketedSeatSeatRow-v3',
partialFilterExpression: {
'reservedTicket.ticketedSeat.seatRow': { $exists: true }
}
}
],
[
{ 'reservedTicket.ticketedSeat.seatSection': 1, bookingTime: -1 },
{
name: 'searchByReservedTicketTicketedSeatSeatSection-v3',
partialFilterExpression: {
'reservedTicket.ticketedSeat.seatSection': { $exists: true }
}
}
],
[
{ 'reservedTicket.ticketType.id': 1, bookingTime: -1 },
{
name: 'searchByReservedTicketTicketTypeId-v3',
partialFilterExpression: {
'reservedTicket.ticketType.id': { $exists: true }
}
}
],
[
{ 'reservedTicket.ticketType.category.id': 1, bookingTime: -1 },
{
name: 'searchByReservedTicketTicketTypeCategoryId-v3',
partialFilterExpression: {
'reservedTicket.ticketType.category.id': { $exists: true }
}
}
],
[
{ 'reservedTicket.ticketType.category.codeValue': 1, bookingTime: -1 },
{
name: 'searchByReservedTicketTicketTypeCategoryCodeValue-v3',
partialFilterExpression: {
'reservedTicket.ticketType.category.codeValue': { $exists: true }
}
}
],
[
{ 'reservedTicket.dateIssued': 1, bookingTime: -1 },
{
name: 'reservedTicketDateIssued',
partialFilterExpression: {
'reservedTicket.dateIssued': { $exists: true }
}
}
],
[
{ 'broker.id': 1, bookingTime: -1 },
{
name: 'searchByBrokerId',
partialFilterExpression: {
'broker.id': { $exists: true }
}
}
],
[
{ 'broker.name': 1, bookingTime: -1 },
{
name: 'searchByBrokerName',
partialFilterExpression: {
'broker.name': { $exists: true }
}
}
],
[
{ 'broker.familyName': 1, bookingTime: -1 },
{
name: 'searchByBrokerFamilyName',
partialFilterExpression: {
'broker.familyName': { $exists: true }
}
}
],
[
{ 'broker.givenName': 1, bookingTime: -1 },
{
name: 'searchByBrokerGivenName',
partialFilterExpression: {
'broker.givenName': { $exists: true }
}
}
],
[
{ 'broker.identifier': 1, bookingTime: -1 },
{
name: 'searchByBrokerIdentifier',
partialFilterExpression: {
'broker.identifier': { $exists: true }
}
}
],
[
{ 'programMembershipUsed.identifier': 1, bookingTime: -1 },
{
name: 'searchByProgramMembershipUsedIdentifier',
partialFilterExpression: {
'programMembershipUsed.identifier': { $exists: true }
}
}
],
[
{ 'programMembershipUsed.issuedThrough.serviceType.codeValue': 1, bookingTime: -1 },
{
name: 'searchByMembershipUsedServiceType',
partialFilterExpression: {
'programMembershipUsed.issuedThrough.serviceType.codeValue': { $exists: true }
}
}
],
[
{ 'underName.id': 1, bookingTime: -1 },
{
name: 'searchByUnderNameId-v3',
partialFilterExpression: {
'underName.id': { $exists: true }
}
}
],
[
{ 'underName.email': 1, bookingTime: -1 },
{
name: 'searchByUnderNameEmail-v3',
partialFilterExpression: {
'underName.email': { $exists: true }
}
}
],
[
{ 'underName.name': 1, bookingTime: -1 },
{
name: 'searchByUnderNameName-v3',
partialFilterExpression: {
'underName.name': { $exists: true }
}
}
],
[
{ 'underName.telephone': 1, bookingTime: -1 },
{
name: 'searchByUnderNameTelephone-v3',
partialFilterExpression: {
'underName.telephone': { $exists: true }
}
}
],
[
{ 'underName.familyName': 1, bookingTime: -1 },
{
name: 'searchByUnderNameFamilyName-v3',
partialFilterExpression: {
'underName.familyName': { $exists: true }
}
}
],
[
{ 'underName.givenName': 1, bookingTime: -1 },
{
name: 'searchByUnderNameGivenName-v3',
partialFilterExpression: {
'underName.givenName': { $exists: true }
}
}
],
[
{ 'underName.identifier': 1, bookingTime: -1 },
{
name: 'searchByUnderNameIdentifier-v3',
partialFilterExpression: {
'underName.identifier': { $exists: true }
}
}
]
];
exports.indexes = indexes;
/**
* 予約スキーマ
*/
let schema;
function createSchema() {
if (schema === undefined) {
schema = new mongoose_1.Schema(schemaDefinition, schemaOptions);
if (settings_1.MONGO_AUTO_INDEX) {
indexes.forEach((indexParams) => {
schema === null || schema === void 0 ? void 0 : schema.index(...indexParams);
});
}
}
return schema;
}