@chevre/domain
Version:
Chevre Domain Library for Node.js
300 lines (299 loc) • 8.86 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 = '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;
}