@chevre/domain
Version:
Chevre Domain Library for Node.js
313 lines (312 loc) • 9.32 kB
JavaScript
"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 = 'AssetTransaction';
exports.modelName = modelName;
const schemaDefinition = {
project: { type: mongoose_1.SchemaTypes.Mixed, required: true },
status: { type: String, required: true },
typeOf: { type: String, required: true },
transactionNumber: { type: String, required: true },
agent: mongoose_1.SchemaTypes.Mixed,
recipient: mongoose_1.SchemaTypes.Mixed,
seller: mongoose_1.SchemaTypes.Mixed,
error: mongoose_1.SchemaTypes.Mixed,
result: mongoose_1.SchemaTypes.Mixed,
object: mongoose_1.SchemaTypes.Mixed,
expires: Date,
startDate: Date,
endDate: Date,
tasksExportAction: mongoose_1.SchemaTypes.Mixed,
// tasksExportedAt: Date, // discontinue(2024-06-19~)
// tasksExportationStatus: String, // discontinue(2024-06-19~)
potentialActions: mongoose_1.SchemaTypes.Mixed,
location: mongoose_1.SchemaTypes.Mixed,
potentialAction: mongoose_1.SchemaTypes.Mixed, // add(2025-02-06~)
instrument: mongoose_1.SchemaTypes.Mixed // add(2025-02-17~)
};
const schemaOptions = {
autoIndex: settings_1.MONGO_AUTO_INDEX,
autoCreate: false,
collection: 'assetTransactions',
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 = [
[
{ transactionNumber: 1 },
{
unique: true,
name: 'uniqueTransactionNumber'
}
],
[
{ transactionNumber: 1, startDate: -1 },
{ name: 'searchByTransactionNumber' }
],
[
{ 'project.id': 1, startDate: -1 },
{
name: 'searchByProjectId-v20220721'
}
],
[
{ typeOf: 1, startDate: -1 },
{ name: 'searchByTypeOf-v2' }
],
[
{ status: 1, startDate: -1 },
{ name: 'searchByStatus-v2' }
],
[
{ startDate: -1 },
{ name: 'searchByStartDate-v2' }
],
[
{ endDate: 1, startDate: -1 },
{
name: 'searchByEndDate-v2',
partialFilterExpression: {
endDate: { $exists: true }
}
}
],
[
{ expires: 1, startDate: -1 },
{ name: 'searchByExpires-v2' }
],
[
{ 'object.accountId': 1, startDate: -1 },
{
name: 'searchByObjectAccountId',
partialFilterExpression: {
'object.accountId': { $exists: true }
}
}
],
[
{ 'object.paymentMethodId': 1, startDate: -1 },
{
name: 'searchByObjectPaymentMethodId',
partialFilterExpression: {
'object.paymentMethodId': { $exists: true }
}
}
],
[
{ 'object.provider.id': 1, startDate: -1 },
{
name: 'searchByObjectProviderId',
partialFilterExpression: {
'object.provider.id': { $exists: true }
}
}
],
[
{ 'object.subReservation.id': 1, startDate: -1 },
{
name: 'searchByObjectSubReservationsId',
partialFilterExpression: {
'object.subReservation.id': { $exists: true }
}
}
],
[
{ 'object.subReservation.reservationNumber': 1, startDate: -1 },
{
name: 'searchByObjectSubReservationsReservationNumber',
partialFilterExpression: {
'object.subReservation.reservationNumber': { $exists: true }
}
}
],
[
{ 'object.subReservation.reservationFor.id': 1, startDate: -1 },
{
name: 'searchByObjectSubReservationsReservationForId',
partialFilterExpression: {
'object.subReservation.reservationFor.id': { $exists: true }
}
}
],
[
{ 'object.subReservation.reservedTicket.ticketedSeat.seatNumber': 1, startDate: -1 },
{
name: 'searchByObjectSubReservationTicketedSeatSeatNumber',
partialFilterExpression: {
'object.subReservation.reservedTicket.ticketedSeat.seatNumber': { $exists: true }
}
}
],
[
{ 'object.reservationFor.id': 1, startDate: -1 },
{
name: 'searchByObjectReservationForId',
partialFilterExpression: {
'object.reservationFor.id': { $exists: true }
}
}
],
[
{ 'object.underName.id': 1, startDate: -1 },
{
name: 'searchByObjectUnderNameId',
partialFilterExpression: {
'object.underName.id': { $exists: true }
}
}
],
[
{ 'object.reservationNumber': 1, startDate: -1 },
{
name: 'searchByObjectReservationNumber',
partialFilterExpression: {
'object.reservationNumber': { $exists: true }
}
}
],
[
{ 'object.reservations.id': 1, startDate: -1 },
{
name: 'searchByObjectReservationsId',
partialFilterExpression: { 'object.reservations.id': { $exists: true } }
}
],
[
{ 'object.reservations.reservationNumber': 1, startDate: -1 },
{
name: 'searchByObjectReservationsReservationNumber',
partialFilterExpression: { 'object.reservations.reservationNumber': { $exists: true } }
}
],
[
{ 'object.reservations.reservationFor.id': 1, startDate: -1 },
{
name: 'searchByObjectReservationsReservationForId',
partialFilterExpression: { 'object.reservations.reservationFor.id': { $exists: true } }
}
],
[
{ 'object.fromLocation.identifier': 1, startDate: -1 },
{
name: 'searchByObjectFromLocationIdentifier',
partialFilterExpression: {
'object.fromLocation.identifier': { $exists: true }
}
}
],
[
{ 'object.toLocation.identifier': 1, startDate: -1 },
{
name: 'searchByObjectToLocationIdentifier',
partialFilterExpression: {
'object.toLocation.identifier': { $exists: true }
}
}
],
[
{ 'object.pendingTransaction.identifier': 1, startDate: -1 },
{
name: 'searchByObjectPendingTransactionIdentifier',
partialFilterExpression: {
'object.pendingTransaction.identifier': { $exists: true }
}
}
],
[
{ 'object.itemOffered.serviceOutput.identifier': 1, startDate: -1 },
{
name: 'searchByObjectItemOfferedServiceOutputIdentifier',
partialFilterExpression: {
'object.itemOffered.serviceOutput.identifier': { $exists: true }
}
}
],
[
{ 'object.typeOf': 1, startDate: -1 },
{
name: 'searchByObjectTypeOf',
partialFilterExpression: {
'object.typeOf': { $exists: true }
}
}
],
[
{ status: 1, expires: 1 },
{ name: 'makeExpired' }
],
[
{ status: 1, 'tasksExportAction.actionStatus': 1, endDate: 1 },
{
name: 'exportTasksIfExists',
partialFilterExpression: {
'tasksExportAction.actionStatus': { $exists: true },
endDate: { $exists: true }
}
}
],
[
{ 'tasksExportAction.actionStatus': 1, 'tasksExportAction.startDate': 1 },
{
name: 'reExportTasks',
partialFilterExpression: {
'tasksExportAction.startDate': { $exists: true }
}
}
],
[
{ 'tasksExportAction.actionStatus': 1, startDate: -1 },
{
name: 'searchByTasksExportActionStatus',
partialFilterExpression: {
'tasksExportAction.actionStatus': { $exists: true }
}
}
],
[
{ 'tasksExportAction.startDate': 1, startDate: -1 },
{
name: 'searchByTasksExportActionStartDate',
partialFilterExpression: {
'tasksExportAction.startDate': { $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;
}