UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

300 lines (299 loc) 8.86 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 = 'AggregateOffer'; exports.modelName = modelName; const schemaDefinition = { project: mongoose_1.SchemaTypes.Mixed, _id: String, typeOf: String, offers: [mongoose_1.SchemaTypes.Mixed], includedInDataCatalog: [mongoose_1.SchemaTypes.Mixed] }; const schemaOptions = { autoIndex: settings_1.MONGO_AUTO_INDEX, autoCreate: false, collection: 'aggregateOffers', id: true, read: settings_1.MONGO_READ_PREFERENCE, writeConcern: writeConcern_1.writeConcern, strict: true, strictQuery: false, timestamps: false, // 2024-11-13~ versionKey: false, // 2024-11-13~ toJSON: { getters: false, virtuals: false, minimize: false, versionKey: false }, toObject: { getters: false, virtuals: true, minimize: false, versionKey: false } }; const indexes = [ [ { 'offers.priceSpecification.price': 1 }, { name: 'searchByOffersPriceSpecificationPrice' } ], [ // オファーコードはプロジェクト内ユニーク { 'offers.identifier': 1, 'project.id': 1 }, { name: 'uniqueOfferIdentifier', unique: true } ], [ { 'includedInDataCatalog.id': 1 }, { name: 'searchByIncludedInDataCatalogId', partialFilterExpression: { 'includedInDataCatalog.id': { $exists: true } } } ], // discontinue(2025-05-04~) // [ // { 'offers.includedInDataCatalog.id': 1 }, // { // name: 'searchByOffersIncludedInDataCatalogId-v2', // partialFilterExpression: { // 'offers.includedInDataCatalog.id': { $exists: true } // } // } // ], [ { 'project.id': 1 }, { name: 'searchByProjectId-v2' } ], [ { 'offers.availability': 1 }, { name: 'searchByOffersAvailability-v2' } ], [ { 'offers.itemOffered.typeOf': 1 }, { name: 'searchByOffersItemOfferedTypeOf-v2' } ], [ { 'offers.identifier': 1 }, { name: 'searchByOffersIdentifier-v2', partialFilterExpression: { 'offers.identifier': { $exists: true } } } ], [ { 'offers.priceSpecification.referenceQuantity.value': 1 }, { name: 'searchByOffersPriceSpecificationReferenceQuantityValue-v2', partialFilterExpression: { 'offers.priceSpecification.referenceQuantity.value': { $exists: true } } } ], [ { 'offers.priceSpecification.accounting.accountsReceivable': 1 }, { name: 'searchByOffersPriceSpecificationAccountingAccountsReceivable-v2', partialFilterExpression: { 'offers.priceSpecification.accounting.accountsReceivable': { $exists: true } } } ], [ { 'offers.priceSpecification.accounting.operatingRevenue.codeValue': 1 }, { name: 'searchByOffersPriceSpecificationAccountingOperatingRevenueCodeValue-v2', partialFilterExpression: { 'offers.priceSpecification.accounting.operatingRevenue.codeValue': { $exists: true } } } ], [ { 'offers.priceSpecification.appliesToMovieTicket.serviceType': 1 }, { name: 'searchByOffersPriceSpecificationAppliesToMovieTicketServiceType-v2', partialFilterExpression: { 'offers.priceSpecification.appliesToMovieTicket.serviceType': { $exists: true } } } ], [ { 'offers.priceSpecification.appliesToMovieTicket.serviceOutput.typeOf': 1 }, { name: 'searchByOffersPriceSpecificationAppliesToMovieTicketServiceOutputTypeOf-v2', partialFilterExpression: { 'offers.priceSpecification.appliesToMovieTicket.serviceOutput.typeOf': { $exists: true } } } ], [ { 'offers.name.ja': 1 }, { name: 'searchByOffersNameJa-v2', partialFilterExpression: { 'offers.name.ja': { $exists: true } } } ], [ { 'offers.name.en': 1 }, { name: 'searchByOffersNameEn-v2', partialFilterExpression: { 'offers.name.en': { $exists: true } } } ], [ { 'offers.alternateName': 1 }, { name: 'searchByOffersAlternateName-v2', partialFilterExpression: { 'offers.alternateName': { $exists: true } } } ], [ { 'offers.category.id': 1 }, { name: 'searchOffersCategoryId-v2', partialFilterExpression: { 'offers.category.id': { $exists: true } } } ], [ { 'offers.category.codeValue': 1 }, { name: 'searchByOffersCategoryCodeValue-v2', partialFilterExpression: { 'offers.category.codeValue': { $exists: true } } } ], [ { 'offers.availableAtOrFrom.id': 1 }, { name: 'searchByOffersAvailableAtOrFromId-v2', partialFilterExpression: { 'offers.availableAtOrFrom.id': { $exists: true } } } ], [ { 'offers.eligibleMembershipType.codeValue': 1 }, { name: 'searchByOffersEligibleMembershipTypeCodeValue-v2', partialFilterExpression: { 'offers.eligibleMembershipType.codeValue': { $exists: true } } } ], [ { 'offers.eligibleMonetaryAmount.currency': 1 }, { name: 'searchByOffersEligibleMonetaryAmountCurrency-v2', partialFilterExpression: { 'offers.eligibleMonetaryAmount.currency': { $exists: true } } } ], [ { 'offers.eligibleSeatingType.codeValue': 1 }, { name: 'searchByOffersEligibleSeatingTypeCodeValue-v2', partialFilterExpression: { 'offers.eligibleSeatingType.codeValue': { $exists: true } } } ], [ { 'offers.addOn.itemOffered.id': 1 }, { name: 'searchByOffersAddOnItemOfferedId-v2', partialFilterExpression: { 'offers.addOn.itemOffered.id': { $exists: true } } } ], [ { 'offers.hasMerchantReturnPolicy.id': 1 }, { name: 'searchByOffersHasMerchantReturnPolicyId-v2', partialFilterExpression: { 'offers.hasMerchantReturnPolicy.id': { $exists: true } } } ], [ { 'offers.additionalProperty': 1 }, { name: 'searchByOffersAdditionalProperty-v2', partialFilterExpression: { 'offers.additionalProperty': { $exists: true } } } ], [ { 'offers.validFrom': 1 }, { name: 'searchByOffersValidFrom-v2', partialFilterExpression: { 'offers.validFrom': { $exists: true } } } ], [ { 'offers.validThrough': 1 }, { name: 'searchByOffersValidThrough-v2', partialFilterExpression: { 'offers.validThrough': { $exists: true } } } ], [ { 'offers.acceptedPaymentMethod.identifier': 1 }, { name: 'searchByOffersAcceptedPaymentMethodIdentifier', partialFilterExpression: { 'offers.acceptedPaymentMethod.identifier': { $exists: true } } } ], [ { 'offers.advanceBookingRequirement.id': 1 }, { name: 'advanceBookingRequirementId', partialFilterExpression: { 'offers.advanceBookingRequirement.id': { $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; }