@chevre/domain
Version:
Chevre Domain Library for Node.js
221 lines (220 loc) • 5.78 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 = 'OwnershipInfo';
exports.modelName = modelName;
const schemaDefinition = {
project: mongoose_1.SchemaTypes.Mixed,
_id: String,
typeOf: {
type: String,
required: true
},
identifier: {
type: String,
required: true
},
ownedBy: mongoose_1.SchemaTypes.Mixed,
acquiredFrom: mongoose_1.SchemaTypes.Mixed,
ownedFrom: Date,
ownedThrough: Date,
typeOfGood: mongoose_1.SchemaTypes.Mixed
};
const schemaOptions = {
autoIndex: settings_1.MONGO_AUTO_INDEX,
autoCreate: false,
collection: 'ownershipInfos',
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
}
};
/**
* 所有権スキーマ
*/
let schema;
function createSchema() {
if (schema === undefined) {
schema = new mongoose_1.Schema(schemaDefinition, schemaOptions);
}
return schema;
}
const indexes = [
[
// 識別子はユニークな前提
{ identifier: 1 },
{
unique: true,
name: 'uniqueIdentifier'
}
],
[
{ ownedFrom: -1 },
{ name: 'searchByOwnedFrom-v3' }
],
[
{ 'project.id': 1, ownedFrom: -1 },
{
name: 'searchByProjectId-v20220721'
}
],
[
{ typeOf: 1, ownedFrom: -1 },
{ name: 'searchByTypeOf-v2' }
],
[
{ identifier: 1, ownedFrom: -1 },
{
name: 'searchByIdentifier-v2',
partialFilterExpression: {
identifier: { $exists: true }
}
}
],
[
{ 'acquiredFrom.id': 1, ownedFrom: -1 },
{
name: 'searchByAcquiredFromId-v2',
partialFilterExpression: {
'acquiredFrom.id': { $exists: true }
}
}
],
[
{ 'ownedBy.typeOf': 1, ownedFrom: -1 },
{
name: 'searchByOwnedByTypeOf',
partialFilterExpression: {
'ownedBy.typeOf': { $exists: true }
}
}
],
[
{ 'ownedBy.id': 1, ownedFrom: -1 },
{
name: 'searchByOwnedById',
partialFilterExpression: {
'ownedBy.id': { $exists: true }
}
}
],
[
{ 'ownedBy.memberOf.membershipNumber': 1, ownedFrom: -1 },
{
name: 'searchByOwnedByMemberOfMembershipNumber',
partialFilterExpression: {
'ownedBy.memberOf.membershipNumber': { $exists: true }
}
}
],
[
{ ownedThrough: -1, ownedFrom: -1 },
{
name: 'searchByOwnedThrough-v2',
partialFilterExpression: {
ownedThrough: { $exists: true }
}
}
],
[
{ 'typeOfGood.typeOf': 1, ownedFrom: -1 },
{
name: 'searchByTypeOfGoodTypeOf-v2',
partialFilterExpression: {
'typeOfGood.typeOf': { $exists: true }
}
}
],
[
{ 'typeOfGood.reservedTicket.ticketToken': 1, ownedFrom: -1 },
{
name: 'searchByTypeOfGoofReservedTicketToken',
partialFilterExpression: {
'typeOfGood.reservedTicket.ticketToken': { $exists: true }
}
}
],
[
{ 'typeOfGood.id': 1, ownedFrom: -1 },
{
name: 'searchByTypeOfGoodId',
partialFilterExpression: {
'typeOfGood.id': { $exists: true }
}
}
],
[
{ 'typeOfGood.identifier': 1, ownedFrom: -1 },
{
name: 'searchByTypeOfGoodIdentifier',
partialFilterExpression: {
'typeOfGood.identifier': { $exists: true }
}
}
],
[
{ 'typeOfGood.membershipFor.id': 1, ownedFrom: -1 },
{
name: 'searchByTypeOfGoodMembershipForId',
partialFilterExpression: {
'typeOfGood.membershipFor.id': { $exists: true }
}
}
],
[
{ 'typeOfGood.issuedThrough.id': 1, ownedFrom: -1 },
{
name: 'searchByTypeOfGoodIssuedThroughId',
partialFilterExpression: {
'typeOfGood.issuedThrough.id': { $exists: true }
}
}
],
[
{ 'typeOfGood.issuedThrough.typeOf': 1, ownedFrom: -1 },
{
name: 'searchByTypeOfGoodIssuedThroughTypeOf',
partialFilterExpression: {
'typeOfGood.issuedThrough.typeOf': { $exists: true }
}
}
],
[
{ 'typeOfGood.accountNumber': 1, ownedFrom: -1 },
{
name: 'searchByTypeOfGoodAccountNumber',
partialFilterExpression: {
'typeOfGood.accountNumber': { $exists: true }
}
}
],
[
{ 'typeOfGood.reservationNumber': 1, ownedFrom: -1 },
{
name: 'searchByTypeOfGoodReservationNumber',
partialFilterExpression: {
'typeOfGood.reservationNumber': { $exists: true }
}
}
]
];
exports.indexes = indexes;