UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

220 lines (219 loc) 5.82 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 factory = require("../../../factory"); const settings_1 = require("../../../settings"); const modelName = 'EventSeries'; 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, alternativeHeadline: mongoose_1.SchemaTypes.Mixed, description: mongoose_1.SchemaTypes.Mixed, duration: String, endDate: Date, eventStatus: String, headline: mongoose_1.SchemaTypes.Mixed, location: mongoose_1.SchemaTypes.Mixed, startDate: Date, workPerformed: mongoose_1.SchemaTypes.Mixed, videoFormat: mongoose_1.SchemaTypes.Mixed, soundFormat: mongoose_1.SchemaTypes.Mixed, subtitleLanguage: mongoose_1.SchemaTypes.Mixed, dubLanguage: mongoose_1.SchemaTypes.Mixed, kanaName: String, offers: mongoose_1.SchemaTypes.Mixed, coaInfo: mongoose_1.SchemaTypes.Mixed }; const schemaOptions = { autoIndex: settings_1.MONGO_AUTO_INDEX, autoCreate: false, collection: 'eventSeries', id: true, read: settings_1.MONGO_READ_PREFERENCE, 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 = [ [ { startDate: 1 }, { name: 'startDate' } ], [ { endDate: 1, startDate: 1 }, { name: 'endDate' } ], [ { 'project.id': 1, startDate: 1 }, { name: 'projectId' } ], [ { 'organizer.id': 1, startDate: 1 }, { name: 'organizerId' } ], [ { typeOf: 1, startDate: 1 }, { name: 'typeOf' } ], [ { eventStatus: 1, startDate: 1 }, { name: 'eventStatus' } ], [ { 'location.id': 1, startDate: 1 }, { name: 'locationId', partialFilterExpression: { 'location.id': { $exists: true } } } ], [ { 'location.branchCode': 1, startDate: 1 }, { name: 'locationBranchCode', partialFilterExpression: { 'location.branchCode': { $exists: true } } } ], [ { 'workPerformed.identifier': 1, startDate: 1 }, { name: 'workPerformedIdentifier', partialFilterExpression: { 'workPerformed.identifier': { $exists: true } } } ], [ { 'workPerformed.version': 1, startDate: 1 }, { name: 'workPerformedVersion', partialFilterExpression: { 'workPerformed.version': { $exists: true } } } ], [ // コンテンツ+バージョンに対するuniqueness { 'project.id': 1, 'location.branchCode': 1, 'workPerformed.identifier': 1, 'workPerformed.version': 1 }, { unique: true, name: 'uniqueEventSeries', partialFilterExpression: { typeOf: factory.eventType.ScreeningEventSeries, 'location.branchCode': { $exists: true }, 'workPerformed.identifier': { $exists: true }, 'workPerformed.version': { $exists: true } } } ], [ { 'videoFormat.typeOf': 1, startDate: 1 }, { name: 'videoFormatTypeOf', partialFilterExpression: { 'videoFormat.typeOf': { $exists: true } } } ], [ { 'soundFormat.typeOf': 1, startDate: 1 }, { name: 'soundFormatTypeOf', partialFilterExpression: { 'soundFormat.typeOf': { $exists: true } } } ], [ { 'name.ja': 1, startDate: 1 }, { name: 'nameJa', partialFilterExpression: { 'name.ja': { $exists: true } } } ], [ { 'name.en': 1, startDate: 1 }, { name: 'nameEn', partialFilterExpression: { 'name.en': { $exists: true } } } ], [ { kanaName: 1, startDate: 1 }, { name: 'kanaName', partialFilterExpression: { kanaName: { $exists: true } } } ], [ { additionalProperty: 1, startDate: 1 }, { name: 'additionalProperty', 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; }