@chevre/domain
Version:
Chevre Domain Library for Node.js
472 lines (471 loc) • 14.6 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 = 'Order';
exports.modelName = modelName;
const schemaDefinition = {
broker: mongoose_1.SchemaTypes.Mixed,
project: { type: mongoose_1.SchemaTypes.Mixed, required: true },
typeOf: { type: String, required: true },
identifier: [mongoose_1.SchemaTypes.Mixed],
name: String,
seller: mongoose_1.SchemaTypes.Mixed,
customer: mongoose_1.SchemaTypes.Mixed,
returner: mongoose_1.SchemaTypes.Mixed,
confirmationNumber: String,
orderNumber: { type: String, required: true },
price: Number,
priceCurrency: String,
acceptedOffers: [mongoose_1.SchemaTypes.Mixed],
paymentMethods: [mongoose_1.SchemaTypes.Mixed],
url: String,
orderStatus: String,
previousOrderStatus: String, // 追加(2023-08-31~)
orderDate: { type: Date, required: true },
isGift: Boolean,
dateReturned: Date,
orderedItem: [mongoose_1.SchemaTypes.Mixed] // 追加(2022-04-15~)
};
const schemaOptions = {
autoIndex: settings_1.MONGO_AUTO_INDEX,
autoCreate: false,
collection: 'orders',
id: true,
read: 'primary',
writeConcern: writeConcern_1.writeConcern,
strict: true,
strictQuery: false,
timestamps: false,
versionKey: false,
toJSON: {
getters: false,
virtuals: false,
minimize: false,
versionKey: false
},
toObject: {
getters: false,
virtuals: true,
minimize: false,
versionKey: false
}
};
const indexes = [
[
{ 'project.id': 1, orderDate: -1 },
{ name: 'searchByProjectId-v20220721' }
],
[
{ identifier: 1, orderDate: -1 },
{
name: 'searchByIdentifier',
partialFilterExpression: {
identifier: { $exists: true }
}
}
],
[
// 注文番号はユニークなはず
{ orderNumber: 1 },
{
unique: true,
name: 'uniqueOrderNumber'
}
],
[
{ 'seller.typeOf': 1, orderDate: -1 },
{
name: 'searchBySellerTypeOf',
partialFilterExpression: {
'seller.typeOf': { $exists: true }
}
}
],
[
{ 'seller.id': 1, orderDate: -1 },
{
name: 'searchOrdersBySellerAndOrderDate',
partialFilterExpression: {
'seller.id': { $exists: true }
}
}
],
[
{ orderDate: -1 },
{
name: 'searchByOrderDate'
}
],
[
{ orderStatus: 1, orderDate: -1 },
{
name: 'searchOrdersByOrderStatusAndOrderDate'
}
],
[
{ 'broker.id': 1, orderDate: -1 },
{
name: 'searchByBrokerId',
partialFilterExpression: {
'broker.id': { $exists: true }
}
}
],
[
{ confirmationNumber: 1, orderDate: -1 },
{
name: 'searchOrdersByConfirmationNumberAndOrderDate',
partialFilterExpression: {
confirmationNumber: { $exists: true }
}
}
],
[
{ 'customer.typeOf': 1, orderDate: -1 },
{
name: 'searchByCustomerTypeOfAndOrderDate',
partialFilterExpression: {
'customer.typeOf': { $exists: true }
}
}
],
[
{ 'customer.id': 1, orderDate: -1 },
{
name: 'searchByCustomerIdAndOrderDate',
partialFilterExpression: {
'customer.id': { $exists: true }
}
}
],
[
{ 'customer.identifier': 1, orderDate: -1 },
{
name: 'searchByCustomerIdentifierAndOrderDate',
partialFilterExpression: {
'customer.identifier': { $exists: true }
}
}
],
[
{ 'customer.additionalProperty': 1, orderDate: -1 },
{
name: 'searchByCustomerAdditionalProperty',
partialFilterExpression: {
'customer.additionalProperty': { $exists: true }
}
}
],
[
{ 'customer.memberOf.membershipNumber': 1, orderDate: -1 },
{
name: 'searchByCustomerMemberhipNumberAndOrderDate',
partialFilterExpression: {
'customer.memberOf.membershipNumber': { $exists: true }
}
}
],
[
{ 'customer.givenName': 1, orderDate: -1 },
{
name: 'searchByCustomerGivenNameAndOrderDate',
partialFilterExpression: {
'customer.givenName': { $exists: true }
}
}
],
[
{ 'customer.familyName': 1, orderDate: -1 },
{
name: 'searchByCustomerFamilyNameAndOrderDate',
partialFilterExpression: {
'customer.familyName': { $exists: true }
}
}
],
[
{ 'customer.email': 1, orderDate: -1 },
{
name: 'searchByCustomerEmailAndOrderDate',
partialFilterExpression: {
'customer.email': { $exists: true }
}
}
],
[
{ 'customer.telephone': 1, orderDate: -1 },
{
name: 'searchByCustomerTelephoneAndOrderDate',
partialFilterExpression: {
'customer.telephone': { $exists: true }
}
}
],
[
{ name: 1, orderDate: -1 },
{
name: 'searchByName',
partialFilterExpression: {
name: { $exists: true }
}
}
],
[
{ 'paymentMethods.accountId': 1, orderDate: -1 },
{
name: 'searchByPaymentMethodsAccountId',
partialFilterExpression: {
'paymentMethods.accountId': { $exists: true }
}
}
],
[
{ 'paymentMethods.additionalProperty': 1, orderDate: -1 },
{
name: 'searchBypaymentMethodsAdditionalProperty',
partialFilterExpression: {
'paymentMethods.additionalProperty': { $exists: true }
}
}
],
[
{ 'paymentMethods.typeOf': 1, orderDate: -1 },
{
name: 'searchByPaymentMethodTypeAndOrderDate',
partialFilterExpression: {
'paymentMethods.typeOf': { $exists: true }
}
}
],
[
{ 'paymentMethods.paymentMethod.identifier': 1, orderDate: -1 },
{
name: 'searchByPaymentMethodIdentifier',
partialFilterExpression: {
'paymentMethods.paymentMethod.identifier': { $exists: true }
}
}
],
[
{ 'paymentMethods.paymentMethodId': 1, orderDate: -1 },
{
name: 'searchByPaymentMethodIdAndOrderDate',
partialFilterExpression: {
'paymentMethods.paymentMethodId': { $exists: true }
}
}
],
[
{ 'acceptedOffers.itemOffered.typeOf': 1, orderDate: -1 },
{
name: 'searchByItemOfferedTypeOf',
partialFilterExpression: {
'acceptedOffers.itemOffered.typeOf': { $exists: true }
}
}
],
[
{ 'acceptedOffers.itemOffered.identifier': 1, orderDate: -1 },
{
name: 'searchByItemOfferedIdentifier',
partialFilterExpression: {
'acceptedOffers.itemOffered.identifier': { $exists: true }
}
}
],
[
{ 'acceptedOffers.itemOffered.id': 1, orderDate: -1 },
{
name: 'searchByItemOfferedIdAndOrderDate',
partialFilterExpression: {
'acceptedOffers.itemOffered.id': { $exists: true }
}
}
],
[
{ 'acceptedOffers.itemOffered.issuedThrough.typeOf': 1, orderDate: -1 },
{
name: 'searchByItemOfferedIssuedThroughTypeOf',
partialFilterExpression: {
'acceptedOffers.itemOffered.issuedThrough.typeOf': { $exists: true }
}
}
],
[
{ 'acceptedOffers.itemOffered.issuedThrough.id': 1, orderDate: -1 },
{
name: 'searchByItemOfferedIssuedThroughId',
partialFilterExpression: {
'acceptedOffers.itemOffered.issuedThrough.id': { $exists: true }
}
}
],
[
{ 'acceptedOffers.itemOffered.programMembershipUsed.identifier': 1, orderDate: -1 },
{
name: 'searchByItemOfferedProgramMembershipUsedIdentifier',
partialFilterExpression: {
'acceptedOffers.itemOffered.programMembershipUsed.identifier': { $exists: true }
}
}
],
[
{ 'acceptedOffers.itemOffered.programMembershipUsed.issuedThrough.serviceType.codeValue': 1, orderDate: -1 },
{
name: 'searchByItemOfferedMembershipUsedServiceType',
partialFilterExpression: {
'acceptedOffers.itemOffered.programMembershipUsed.issuedThrough.serviceType.codeValue': { $exists: true }
}
}
],
[
{ 'acceptedOffers.itemOffered.reservationNumber': 1, orderDate: -1 },
{
name: 'searchByItemOfferedReservationNumberAndOrderDate',
partialFilterExpression: {
'acceptedOffers.itemOffered.reservationNumber': { $exists: true }
}
}
],
[
{ 'acceptedOffers.itemOffered.reservationFor.id': 1, orderDate: -1 },
{
name: 'searchByItemOfferedReservationForIdAndOrderDate',
partialFilterExpression: {
'acceptedOffers.itemOffered.reservationFor.id': { $exists: true }
}
}
],
[
{ 'acceptedOffers.itemOffered.reservationFor.identifier': 1, orderDate: -1 },
{
name: 'searchByItemOfferedReservationForIdentifierAndOrderDate',
partialFilterExpression: {
'acceptedOffers.itemOffered.reservationFor.identifier': { $exists: true }
}
}
],
[
{ 'acceptedOffers.itemOffered.reservationFor.name': 1, orderDate: -1 },
{
name: 'searchByItemOfferedReservationForNameAndOrderDate',
partialFilterExpression: {
'acceptedOffers.itemOffered.reservationFor.name': { $exists: true }
}
}
],
[
{ 'acceptedOffers.itemOffered.reservationFor.endDate': 1, orderDate: -1 },
{
name: 'searchByItemOfferedReservationForEndDateAndOrderDate',
partialFilterExpression: {
'acceptedOffers.itemOffered.reservationFor.endDate': { $exists: true }
}
}
],
[
{ 'acceptedOffers.itemOffered.reservationFor.startDate': 1, orderDate: -1 },
{
name: 'searchByItemOfferedReservationForStartDateAndOrderDate',
partialFilterExpression: {
'acceptedOffers.itemOffered.reservationFor.startDate': { $exists: true }
}
}
],
[
{ 'acceptedOffers.itemOffered.reservationFor.location.branchCode': 1, orderDate: -1 },
{
name: 'searchByItemOfferedReservationForLocationBranchCodeAndOrderDate',
partialFilterExpression: {
'acceptedOffers.itemOffered.reservationFor.location.branchCode': { $exists: true }
}
}
],
[
{ 'acceptedOffers.itemOffered.reservationFor.superEvent.id': 1, orderDate: -1 },
{
name: 'searchByItemOfferedReservationForLocationSuperEventIdAndOrderDate',
partialFilterExpression: {
'acceptedOffers.itemOffered.reservationFor.superEvent.id': { $exists: true }
}
}
],
[
{ 'acceptedOffers.itemOffered.reservationFor.superEvent.location.branchCode': 1, orderDate: -1 },
{
name: 'searchByItemOfferedReservationForLocationSuperEventLocationBranchCodeAndOrderDate',
partialFilterExpression: {
'acceptedOffers.itemOffered.reservationFor.superEvent.location.branchCode': { $exists: true }
}
}
],
[
{ 'acceptedOffers.itemOffered.reservationFor.superEvent.workPerformed.identifier': 1, orderDate: -1 },
{
name: 'searchByItemOfferedReservationForLocationSuperEventWorkPerformedIdentifierAndOrderDate',
partialFilterExpression: {
'acceptedOffers.itemOffered.reservationFor.superEvent.workPerformed.identifier': { $exists: true }
}
}
],
[
{ 'acceptedOffers.itemOffered.reservedTicket.ticketedSeat.seatNumber': 1, orderDate: -1 },
{
name: 'searchByReservedTicketTicketedSeatSeatNumber',
partialFilterExpression: {
'acceptedOffers.itemOffered.reservedTicket.ticketedSeat.seatNumber': { $exists: true }
}
}
],
[
{ 'acceptedOffers.itemOffered.reservedTicket.identifier': 1, orderDate: -1 },
{
name: 'searchByReservedTicketIdentifier',
partialFilterExpression: {
'acceptedOffers.itemOffered.reservedTicket.identifier': { $exists: true }
}
}
],
[
{ 'acceptedOffers.serialNumber': 1, orderDate: -1 },
{
name: 'searchByAcceptedOffersSerialNumber',
partialFilterExpression: {
'acceptedOffers.serialNumber': { $exists: true }
}
}
],
[
{ price: 1, orderDate: -1 },
{
name: 'searchByPrice',
partialFilterExpression: {
price: { $exists: true }
}
}
],
[
{ typeOf: 1, orderDate: -1 },
{ name: 'searchByTypeOf' }
]
];
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;
}