UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

204 lines (203 loc) 5.88 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 = 'Place'; exports.modelName = modelName; const schemaDefinition = { project: { type: mongoose_1.SchemaTypes.Mixed, required: true }, // 必須化(2023-07-14~) parentOrganization: { type: mongoose_1.SchemaTypes.Mixed, required: true }, typeOf: { type: String, required: true }, name: mongoose_1.SchemaTypes.Mixed, description: mongoose_1.SchemaTypes.Mixed, address: mongoose_1.SchemaTypes.Mixed, branchCode: { type: String, required: true }, containedInPlace: mongoose_1.SchemaTypes.Mixed, containsPlace: [mongoose_1.SchemaTypes.Mixed], maximumAttendeeCapacity: Number, openingHoursSpecification: mongoose_1.SchemaTypes.Mixed, smokingAllowed: Boolean, additionalProperty: [mongoose_1.SchemaTypes.Mixed], // ↓ルームの施設からの分離に伴い属性追加(2023-06-22~) openSeatingAllowed: mongoose_1.SchemaTypes.Mixed, amenityFeature: mongoose_1.SchemaTypes.Mixed // ↓migrated to civicStructures(2024-09-19~) // alternateName: SchemaTypes.Mixed, // hasEntranceGate: [SchemaTypes.Mixed], // hasPOS: [SchemaTypes.Mixed], // sameAs: String, // telephone: String, // url: String, // kanaName: String, // offers: SchemaTypes.Mixed, }; const schemaOptions = { autoIndex: settings_1.MONGO_AUTO_INDEX, autoCreate: false, collection: 'places', id: true, read: settings_1.MONGO_READ_PREFERENCE, writeConcern: writeConcern_1.writeConcern, strict: true, strictQuery: false, timestamps: false, // 2024-09-03~ versionKey: false, // 2024-09-03~ toJSON: { getters: false, virtuals: false, minimize: false, versionKey: false }, toObject: { getters: false, virtuals: true, minimize: false, versionKey: false } }; const indexes = [ [ { branchCode: 1 }, { name: 'searchByBranchCode-v2' } ], [ { typeOf: 1, branchCode: 1 }, { name: 'searchByTypeOf-v2' } ], [ { 'project.id': 1, branchCode: 1 }, { name: 'searchByProjectId-v20220721' } ], [ { 'name.ja': 1, branchCode: 1 }, { name: 'searchByNameJa', partialFilterExpression: { 'name.ja': { $exists: true } } } ], [ { 'name.en': 1, branchCode: 1 }, { name: 'searchByNameEn', partialFilterExpression: { 'name.en': { $exists: true } } } ], [ { 'parentOrganization.id': 1, branchCode: 1 }, { name: 'searchByParentOrganization', partialFilterExpression: { 'parentOrganization.id': { $exists: true } } } ], [ { 'containsPlace.branchCode': 1, branchCode: 1 }, { name: 'searchByContainsPlaceBranchCode', partialFilterExpression: { 'containsPlace.branchCode': { $exists: true } } } ], [ { 'containsPlace.containsPlace.branchCode': 1, branchCode: 1 }, { name: 'searchByContainsPlaceContainsPlaceBranchCode', partialFilterExpression: { 'containsPlace.containsPlace.branchCode': { $exists: true } } } ], [ { additionalProperty: 1, branchCode: 1 }, { name: 'searchByAdditionalProperty', partialFilterExpression: { additionalProperty: { $exists: true } } } ], [ { 'containsPlace.additionalProperty': 1, branchCode: 1 }, { name: 'searchByContainsPlaceAdditionalProperty', partialFilterExpression: { 'containsPlace.additionalProperty': { $exists: true } } } ], [ { 'containsPlace.containsPlace.additionalProperty': 1, branchCode: 1 }, { name: 'searchByContainsPlaceContainsPlaceAdditionalProperty', partialFilterExpression: { 'containsPlace.containsPlace.additionalProperty': { $exists: true } } } ], [ { 'containedInPlace.id': 1, branchCode: 1 }, { name: 'searchByContainedInPlaceId', partialFilterExpression: { 'containedInPlace.id': { $exists: true } } } ], [ { 'containedInPlace.branchCode': 1, branchCode: 1 }, { name: 'searchByContainedInPlaceBranchCode', partialFilterExpression: { 'containedInPlace.branchCode': { $exists: true } } } ] // [ // { // typeOf: 1, // 'project.id': 1, // 'containedInPlace.branchCode': 1, // branchCode: 1, // 'containsPlace.branchCode': 1, // 'containsPlace.containsPlace.branchCode': 1 // }, // { // name: 'projectSeatsUsingSort' // } // ] ]; 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; }