rest-hapi
Version:
A RESTful API generator for hapi
124 lines (117 loc) • 2.53 kB
JavaScript
'use strict'
const Config = require('../config')
const _ = require('lodash')
module.exports = function(mongoose) {
const modelName = 'auditLog'
const Types = mongoose.Schema.Types
const dateField = {
type: Types.Date,
default: () => {
return Date.now()
}
}
if (Config.auditLogTTL) {
dateField.expires = Config.auditLogTTL
}
const Schema = new mongoose.Schema(
{
date: dateField,
method: {
type: Types.String,
enum: ['POST', 'PUT', 'DELETE', 'GET', null],
allowNull: true,
default: null
},
action: {
type: Types.String,
allowNull: true,
default: null
},
endpoint: {
type: Types.String,
allowNull: true,
default: null
},
user: {
type: Types.ObjectId,
allowNull: true,
default: null
},
collectionName: {
type: Types.String,
allowNull: true,
default: null
},
childCollectionName: {
type: Types.String,
allowNull: true,
default: null
},
associationType: {
type: Types.String,
enum: ['ONE_MANY', 'MANY_MANY', '_MANY', null],
allowNull: true,
default: null
},
documents: {
type: [Types.ObjectId],
allowNull: true,
default: null
},
payload: {
type: Types.Object,
allowNull: true,
default: null
},
params: {
type: Types.Object,
allowNull: true,
default: null
},
result: {
type: Types.Object,
allowNull: true,
default: null
},
statusCode: {
type: Types.Number,
allowNull: true,
default: null
},
responseMessage: {
type: Types.String,
allowNull: true,
default: null
},
isError: {
type: Types.Boolean,
default: false,
required: true
},
ipAddress: {
type: Types.String,
allowNull: true,
default: null
},
notes: {
type: Types.String,
allowNull: true,
default: null
}
},
{ collection: modelName }
)
Schema.statics = {
collectionName: modelName,
routeOptions: {
allowUpdate: false,
allowDelete: false
}
}
if (!_.isEmpty(Config.auditLogScope)) {
Schema.statics.routeOptions.routeScope = {
rootScope: Config.auditLogScope
}
}
return Schema
}