UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

238 lines (237 loc) 6.31 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 = 'Task'; exports.modelName = modelName; const schemaDefinition = { alternateName: String, // add(2025-03-28~) identifier: String, description: String, // add(2025-03-30~) project: { type: mongoose_1.SchemaTypes.Mixed, required: true }, name: { type: String, required: true }, status: { type: String, required: true }, runsAt: { type: Date, required: true }, remainingNumberOfTries: { type: Number, required: true }, numberOfTried: { type: Number, required: true }, lastTriedAt: Date, executionResults: [mongoose_1.SchemaTypes.Mixed], executor: mongoose_1.SchemaTypes.Mixed, data: mongoose_1.SchemaTypes.Mixed, dateAborted: Date, expires: Date // add(2024-04-23~) }; const schemaOptions = { autoIndex: settings_1.MONGO_AUTO_INDEX, autoCreate: false, collection: 'tasks', 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, runsAt: -1 }, { name: 'searchByProjectId-v20220721' } ], [ { name: 1, runsAt: -1 }, { name: 'searchByName-v2' } ], [ { status: 1, runsAt: -1 }, { name: 'searchByStatus-v2' } ], [ { runsAt: -1 }, { name: 'searchByRunsAt-v2' } ], [ // identifier追加(2023-09-01~) { identifier: 1, runsAt: -1 }, { name: 'searchByIdentifier', partialFilterExpression: { identifier: { $exists: true } } } ], [ { dateAborted: 1, runsAt: -1 }, { name: 'searchByDateAborted', partialFilterExpression: { dateAborted: { $type: 'date' } } } ], [ { lastTriedAt: 1, runsAt: -1 }, { name: 'searchByLastTriedAt-v2', partialFilterExpression: { lastTriedAt: { $type: 'date' } } } ], [ { expires: 1, runsAt: -1 }, { name: 'expires', partialFilterExpression: { expires: { $exists: true } } } ], [ { remainingNumberOfTries: 1, runsAt: -1 }, { name: 'searchByRemainingNumberOfTries-v2' } ], [ { 'data.agent.id': 1, runsAt: -1 }, { name: 'searchByDataAgentId', partialFilterExpression: { 'data.agent.id': { $exists: true } } } ], [ { 'data.object.orderNumber': 1, runsAt: -1 }, { name: 'searchByDataObjectOrderNumber', partialFilterExpression: { 'data.object.orderNumber': { $exists: true } } } ], [ { 'data.object.transactionNumber': 1, runsAt: -1 }, { name: 'searchByDataObjectTransactionNumber', partialFilterExpression: { 'data.object.transactionNumber': { $exists: true } } } ], [ { 'data.object.id': 1, runsAt: -1 }, { name: 'searchByDataObjectId', partialFilterExpression: { 'data.object.id': { $exists: true } } } ], [ { 'data.purpose.id': 1, runsAt: -1 }, { name: 'searchByDataPurposeId', partialFilterExpression: { 'data.purpose.id': { $exists: true } } } ], [ { 'data.purpose.orderNumber': 1, runsAt: -1 }, { name: 'searchByDataPurposeOrderNumber', partialFilterExpression: { 'data.purpose.orderNumber': { $exists: true } } } ], [ { 'data.id': 1, runsAt: -1 }, { name: 'searchByDataId', partialFilterExpression: { 'data.id': { $exists: true } } } ], [ { status: 1, name: 1, numberOfTried: 1, runsAt: 1 }, { name: 'executeOneByName' } ], [ { status: 1, runsAt: 1, name: 1 }, { name: 'executeOneByNameIfExists' } // add(2025-03-08~) ], [ { status: 1, remainingNumberOfTries: 1, lastTriedAt: 1 }, { name: 'retry', partialFilterExpression: { lastTriedAt: { $type: 'date' } } } ], [ { status: 1, expires: 1 }, { name: 'makeExpiredMany', partialFilterExpression: { expires: { $exists: true } } } ], [ // add unique index(2025-03-28~) { alternateName: 1 }, { unique: true, name: 'uniqueAlternateName', partialFilterExpression: { alternateName: { $exists: true } } } ] // tslint:disable-next-line:no-suspicious-comment // TODO add unique index(2025-03-28~) // [ // { identifier: 1 }, // { // unique: true, // name: 'uniqueIdentifier', // partialFilterExpression: { // identifier: { $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; }