UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

102 lines (101 loc) 3.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DataCatalogIdentifier = exports.modelName = void 0; exports.createSchema = createSchema; const mongoose_1 = require("mongoose"); const writeConcern_1 = require("../writeConcern"); const settings_1 = require("../../../settings"); var DataCatalogIdentifier; (function (DataCatalogIdentifier) { DataCatalogIdentifier["confirmationNumber"] = "confirmationNumber"; DataCatalogIdentifier["transactionNumber"] = "transactionNumber"; DataCatalogIdentifier["orderNumber"] = "orderNumber"; DataCatalogIdentifier["serviceOutputIdentifier"] = "serviceOutputIdentifier"; })(DataCatalogIdentifier || (exports.DataCatalogIdentifier = DataCatalogIdentifier = {})); const modelName = 'TransactionNumber'; exports.modelName = modelName; const schemaDefinition = { identifier: { type: String, required: true }, project: { type: mongoose_1.SchemaTypes.Mixed, required: true }, includedInDataCatalog: { type: mongoose_1.SchemaTypes.Mixed, required: true }, dateCreated: { type: Date, required: true }, dateModified: { type: Date, required: false }, expires: { type: Date, required: true }, interactionStatistic: { type: mongoose_1.SchemaTypes.Mixed, required: true }, typeOf: { type: String, required: true } }; const schemaOptions = { autoIndex: settings_1.MONGO_AUTO_INDEX, autoCreate: false, collection: 'transactionNumbers', 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, 'includedInDataCatalog.identifier': 1, identifier: 1 }, { unique: true, name: 'uniqueIdentifier' } ], [ { dateCreated: -1 }, { name: 'dateCreated' } ], [ { 'project.id': 1, dateCreated: -1 }, { name: 'projectId' } ], [ { 'includedInDataCatalog.identifier': 1, dateCreated: -1 }, { name: 'dataCatalogIdentifier' } ], [ { identifier: 1, dateCreated: -1 }, { name: 'identifier' } ], [ { expires: 1 }, { name: 'expires', expireAfterSeconds: 0 } ] ]; /** * 取引識別子(注文番号、取引番号など)スキーマ */ 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; }