@open-age/insight-client
Version:
67 lines (59 loc) • 1.75 kB
JavaScript
/* eslint-disable no-undef */
const api = require('../helpers/request-helper')('journals')
exports.start = () => {
const item = {
changes: []
}
if (arguments.length === 3) {
item.entity = arguments[0]
item.action = arguments[1]
item.context = arguments[2]
} else if (arguments.length === 2) {
item.action = arguments[0]
item.context = arguments[1]
} else if (arguments.length === 1) {
item.context = arguments[0]
}
let builder = {
message: (message) => {
item.message = message
},
action: (action) => {
item.action = action
},
entity: (entity) => {
item.entity = entity
},
add: (field, value, oldValue) => {
if (value === oldValue) {
return builder
}
item.changes.push({
field: field,
value: value,
oldValue: oldValue,
type: value ? typeof value : typeof oldValue
})
return builder
},
end: async (message) => {
item.message = message
return api.create({
type: item.action,
entity: typeof item.entity === 'function' ? item.entity() : item.entity,
message: item.message,
changes: item.changes
}, null, item.context)
}
}
return builder
}
exports.create = async (model, context) => {
return api.create(model, null, context)
}
exports.search = async (query, context) => {
return api.search(query, null, context)
}
exports.get = async (id, context) => {
return api.get(id, null, context)
}