UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

285 lines (284 loc) 7.87 kB
"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 = 'Event'; exports.modelName = modelName; const schemaDefinition = { project: { type: mongoose_1.SchemaTypes.Mixed, required: true }, organizer: { type: mongoose_1.SchemaTypes.Mixed, required: true }, _id: String, typeOf: { type: String, required: true }, identifier: String, name: mongoose_1.SchemaTypes.Mixed, additionalProperty: mongoose_1.SchemaTypes.Mixed, description: mongoose_1.SchemaTypes.Mixed, doorTime: Date, endDate: Date, eventStatus: String, location: mongoose_1.SchemaTypes.Mixed, startDate: Date, superEvent: mongoose_1.SchemaTypes.Mixed, offers: mongoose_1.SchemaTypes.Mixed, maximumAttendeeCapacity: { type: Number }, remainingAttendeeCapacity: { type: Number }, checkInCount: { type: Number }, attendeeCount: { type: Number }, aggregateReservation: mongoose_1.SchemaTypes.Mixed, aggregateOffer: mongoose_1.SchemaTypes.Mixed, coaInfo: mongoose_1.SchemaTypes.Mixed // ↓discontinue EventSeries(2024-09-17~) // alternateName: SchemaTypes.Mixed, // alternativeHeadline: SchemaTypes.Mixed, // duration: String, // headline: SchemaTypes.Mixed, // workPerformed: SchemaTypes.Mixed, // videoFormat: SchemaTypes.Mixed, // soundFormat: SchemaTypes.Mixed, // subtitleLanguage: SchemaTypes.Mixed, // dubLanguage: SchemaTypes.Mixed, // kanaName: String, }; const schemaOptions = { autoIndex: settings_1.MONGO_AUTO_INDEX, autoCreate: false, collection: 'events', id: true, read: settings_1.MONGO_READ_PREFERENCE, writeConcern: writeConcern_1.writeConcern, strict: true, strictQuery: false, timestamps: false, // 2024-09-06~ versionKey: false, // 2024-09-06~ toJSON: { getters: false, virtuals: false, minimize: false, versionKey: false }, toObject: { getters: false, virtuals: true, minimize: false, versionKey: false } }; const indexes = [ [ { 'project.id': 1, startDate: 1 }, { name: 'searchByProjectId-v20220721' } ], [ { 'organizer.id': 1, startDate: 1 }, { name: 'searchByOrganizerId', partialFilterExpression: { 'organizer.id': { $exists: true } } } ], [ { typeOf: 1, startDate: 1 }, { name: 'searchByTypeOf' } ], [ { eventStatus: 1, startDate: 1 }, { name: 'searchByEventStatus' } ], [ { name: 1, startDate: 1 }, { name: 'searchByName' } ], [ { 'superEvent.id': 1, startDate: 1 }, { name: 'searchBySuperEventId', partialFilterExpression: { 'superEvent.id': { $exists: true } } } ], [ { 'location.id': 1, startDate: 1 }, { name: 'searchByLocationId', partialFilterExpression: { 'location.id': { $exists: true } } } ], [ { 'location.branchCode': 1, startDate: 1 }, { name: 'searchByLocationBranchCode', partialFilterExpression: { 'location.branchCode': { $exists: true } } } ], [ { 'superEvent.location.branchCode': 1, startDate: 1 }, { name: 'searchBySuperEventLocationBranchCode', partialFilterExpression: { 'superEvent.location.branchCode': { $exists: true } } } ], [ { 'superEvent.location.id': 1, startDate: 1 }, { name: 'searchBySuperEventLocationId', partialFilterExpression: { 'superEvent.location.id': { $exists: true } } } ], [ { 'superEvent.workPerformed.identifier': 1, startDate: 1 }, { name: 'searchBySuperEventWorkPerformedIdentifier', partialFilterExpression: { 'superEvent.workPerformed.identifier': { $exists: true } } } ], [ { startDate: 1 }, { name: 'searchByStartDate' } ], [ { endDate: 1, startDate: 1 }, { name: 'searchByEndDate' } ], [ { 'offers.itemOffered.serviceOutput.reservedTicket.ticketedSeat.typeOf': 1, startDate: 1 }, { partialFilterExpression: { 'offers.itemOffered.serviceOutput.reservedTicket.ticketedSeat.typeOf': { $exists: true } }, name: 'searchByOffersItemOfferedServiceOutputReservedTicketTicketedSeatTypeOf' } ], [ { 'offers.itemOffered.serviceType.id': 1, startDate: 1 }, { partialFilterExpression: { 'offers.itemOffered.serviceType.id': { $exists: true } }, name: 'searchByOffersItemOfferedServiceTypeId' } ], [ { 'offers.itemOffered.id': 1, startDate: 1 }, { partialFilterExpression: { 'offers.itemOffered.id': { $exists: true } }, name: 'searchByOffersItemOfferedId' } ], [ { 'offers.seller.makesOffer': 1, startDate: 1 }, { name: 'searchBySellerMakesOffer', partialFilterExpression: { 'offers.seller.makesOffer': { $exists: true } } } ], [ { 'offers.seller.makesOffer.availableAtOrFrom.id': 1, startDate: 1 }, { name: 'sellerMakesOfferAvailableAtOrFromId', partialFilterExpression: { 'offers.seller.makesOffer.availableAtOrFrom.id': { $exists: true } } } ], // [ // { 'offers.seller.makesOffer.offeredBy.identifier': 1, startDate: 1 }, // { // name: 'offeredByIdentifier', // partialFilterExpression: { // 'offers.seller.makesOffer.offeredBy.identifier': { $exists: true } // } // } // ], [ { 'project.id': 1, identifier: 1 }, { name: 'uniqueIdentifier', unique: true, partialFilterExpression: { identifier: { $exists: true } } } ], [ { 'name.ja': 1, startDate: 1 }, { name: 'searchByNameJa', partialFilterExpression: { 'name.ja': { $exists: true } } } ], [ { 'name.en': 1, startDate: 1 }, { name: 'searchByNameEn', partialFilterExpression: { 'name.en': { $exists: true } } } ], [ { additionalProperty: 1, startDate: 1 }, { name: 'searchByAdditionalProperty', partialFilterExpression: { additionalProperty: { $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; }