@chevre/domain
Version:
Chevre Domain Library for Node.js
136 lines (135 loc) • 3.88 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 = 'PriceSpecification';
exports.modelName = modelName;
const schemaDefinition = {
project: mongoose_1.SchemaTypes.Mixed,
typeOf: { type: String, required: true },
name: mongoose_1.SchemaTypes.Mixed,
price: { type: Number, required: true },
priceCurrency: String,
validFrom: Date,
validThrough: Date,
valueAddedTaxIncluded: Boolean,
// referenceQuantity: SchemaTypes.Mixed,
// appliesToSoundFormat: String,
appliesToCategoryCode: mongoose_1.SchemaTypes.Mixed,
appliesToMovieTicket: mongoose_1.SchemaTypes.Mixed,
appliesToVideoFormat: String
};
const schemaOptions = {
autoIndex: settings_1.MONGO_AUTO_INDEX,
autoCreate: false,
collection: 'priceSpecifications',
id: true,
read: settings_1.MONGO_READ_PREFERENCE,
writeConcern: writeConcern_1.writeConcern,
strict: true, // true化(2023-02-27~)
strictQuery: false,
timestamps: false, // 2024-08-06~
versionKey: false, // 2024-08-06~
toJSON: {
getters: false,
virtuals: false,
minimize: false,
versionKey: false
},
toObject: {
getters: false,
virtuals: true,
minimize: false,
versionKey: false
}
};
/**
* 価格仕様スキーマ
*/
let schema;
function createSchema() {
if (schema === undefined) {
schema = new mongoose_1.Schema(schemaDefinition, schemaOptions);
}
return schema;
}
const indexes = [
// [ // discontinue(2024-08-07~)
// { createdAt: 1 },
// { name: 'searchByCreatedAt' }
// ],
// [
// { updatedAt: 1 },
// { name: 'searchByUpdatedAt' }
// ],
[
{ price: 1 },
{ name: 'searchByPrice' }
],
[
{ 'project.id': 1, price: 1 },
{ name: 'searchByProjectId' }
],
[
{ typeOf: 1, price: 1 },
{ name: 'searchByTypeOf' }
],
[
{ appliesToVideoFormat: 1, price: 1 },
{
name: 'searchByAppliesToVideoFormat',
partialFilterExpression: {
appliesToVideoFormat: { $exists: true }
}
}
],
[
{ 'appliesToMovieTicket.serviceType': 1, price: 1 },
{
name: 'searchByAppliesToMovieTicketServiceType',
partialFilterExpression: {
'appliesToMovieTicket.serviceType': { $exists: true }
}
}
],
[
{ 'appliesToMovieTicket.serviceOutput.typeOf': 1, price: 1 },
{
name: 'searchByAppliesToMovieTicketServiceOutputTypeOf',
partialFilterExpression: {
'appliesToMovieTicket.serviceOutput.typeOf': { $exists: true }
}
}
],
[
{ appliesToCategoryCode: 1, price: 1 },
{
name: 'searchByAppliesToCategoryCode',
partialFilterExpression: {
appliesToCategoryCode: { $exists: true }
}
}
],
[
{ 'appliesToCategoryCode.codeValue': 1, price: 1 },
{
name: 'searchByAppliesToCategoryCodeCodeValue',
partialFilterExpression: {
'appliesToCategoryCode.codeValue': { $exists: true }
}
}
],
[
{ 'appliesToCategoryCode.inCodeSet.identifier': 1, price: 1 },
{
name: 'searchByAppliesToCategoryCodeInCodeSetIdentifier',
partialFilterExpression: {
'appliesToCategoryCode.inCodeSet.identifier': { $exists: true }
}
}
]
];
exports.indexes = indexes;