@teamtagevo/evolvus-docket
Version:
docket - audit component of the Evolvus Docket Server
100 lines (94 loc) • 2.7 kB
JavaScript
const debug = require("debug")("evolvus-docket:index");
const _ = require("lodash");
const model = require("./model/docketSchema");
const dbSchema = require("./db/docketSchema");
// const docket = require("./db/docket");
const Dao = require("@evolvus/evolvus-mongo-dao").Dao;
const collection = new Dao("audit", dbSchema);
const validate = require("jsonschema")
.validate;
var filterAttributes = model.filterAttributes;
var sortAttributes = model.sortableAttributes;
module.exports = {
model,
dbSchema,
filterAttributes,
sortAttributes
};
module.exports.save = (docketObject) => {
return new Promise((resolve, reject) => {
try {
debug(`Input docket object: ${JSON.stringify(docketObject)}`);
if (docketObject == null) {
throw new Error(`IllegalArgumentException: docketObject is ${docketObject}`);
}
let res = validate(docketObject, model.schema);
debug(`Validation against JSON schema:result:${res}`);
if (res.errors.length != 0) {
reject(res.errors)
} else {
collection.save(docketObject).then((result) => {
debug(`Audit saved successfully: ${result}`);
resolve(result);
}).catch((e) => {
debug(`collection.save promise failed: ${e}`);
reject(e);
});
}
} catch (e) {
debug(`Try-catch failed: ${e}`);
reject(e);
}
});
};
module.exports.find = (filter, orderby, skipCount, limit) => {
return new Promise((resolve, reject) => {
try {
let filterObject = _.pick(filter, filterAttributes);
if (filter.fromDate != null && filter.toDate != null) {
filterObject = {
$and: [{
$and: [filterObject]
},
{
$and: [{
eventDateTime: {
$gte: filter.fromDate
}
}, {
eventDateTime: {
$lt: filter.toDate
}
}]
}
]
};
}
debug(`FilterObject is: ${JSON.stringify(filterObject)}`);
collection.find(filterObject, orderby, skipCount, limit).then((audits) => {
debug(`Audits stored in database are: ${audits.length}`);
resolve(audits);
}).catch((e) => {
debug(`Collection.find promise failed: ${e}`)
reject(e);
});
} catch (e) {
debug(`Try-catch failed: ${e}`);
reject(e);
}
});
};
module.exports.audit = {
application: "SANDSTORM(default)",
name: "",
eventCode: "",
source: "",
ipAddress: "",
level: null,
status: "",
eventDateTime: "",
details: "",
keyDataAsJSON: "",
createdBy: "",
keywords: ""
};