UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

119 lines (118 loc) 2.99 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 = 'Account'; exports.modelName = modelName; const schemaDefinition = { project: mongoose_1.SchemaTypes.Mixed, typeOf: String, accountType: String, accountNumber: String, name: String, balance: Number, availableBalance: Number, pendingTransactions: [mongoose_1.SchemaTypes.Mixed], openDate: Date, closeDate: Date // createdAt: Date, // updatedAt: Date }; const schemaOptions = { autoIndex: settings_1.MONGO_AUTO_INDEX, autoCreate: false, collection: 'accounts', 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 = [ // 口座タイプと口座番号でユニーク [ { accountType: 1, accountNumber: 1 }, { unique: true, partialFilterExpression: { accountType: { $exists: true }, accountNumber: { $exists: true } } } ], // 口座番号はグローバルユニーク [ { accountNumber: 1 }, { name: 'uniqueAccountNumber', unique: true } ], [ { 'project.id': 1, openDate: -1 }, { name: 'searchByProjectId-v20220721' } ], [ { typeOf: 1, openDate: -1 }, { name: 'searchByTypeOf-v2' } ], [ { accountNumber: 1, openDate: -1 }, { name: 'searchByAccountNumber-v2' } ], [ { accountType: 1, openDate: -1 }, { name: 'searchByAccountType-v2' } ], [ { name: 1, openDate: -1 }, { name: 'searchByName-v2' } ], [ { openDate: -1 }, { name: 'searchByOpenDate-v2' } ], [ { status: 1, openDate: -1 }, { name: 'searchByStatus-v2' } ], [ { accountType: 1, accountNumber: 1, status: 1 }, { name: 'authorizeAmount' } ] ]; 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; }