@chevre/domain
Version:
Chevre Domain Library for Node.js
102 lines (101 loc) • 3.06 kB
JavaScript
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;
}
;