2019-06-03 09:32:43 +00:00
|
|
|
package arn
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"reflect"
|
|
|
|
|
|
|
|
"github.com/aerogo/aero"
|
|
|
|
)
|
|
|
|
|
|
|
|
// Loggable applies to any type that has a TypeName function.
|
|
|
|
type Loggable interface {
|
2019-09-07 10:56:13 +00:00
|
|
|
Identifiable
|
2019-06-03 09:32:43 +00:00
|
|
|
TypeName() string
|
|
|
|
Self() Loggable
|
|
|
|
}
|
|
|
|
|
|
|
|
// edit creates an edit log entry.
|
|
|
|
func edit(loggable Loggable, ctx aero.Context, key string, value reflect.Value, newValue reflect.Value) (consumed bool, err error) {
|
|
|
|
user := GetUserFromContext(ctx)
|
|
|
|
|
|
|
|
// Write log entry
|
|
|
|
logEntry := NewEditLogEntry(user.ID, "edit", loggable.TypeName(), loggable.GetID(), key, fmt.Sprint(value.Interface()), fmt.Sprint(newValue.Interface()))
|
|
|
|
logEntry.Save()
|
|
|
|
|
|
|
|
return false, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// onAppend saves a log entry.
|
|
|
|
func onAppend(loggable Loggable, ctx aero.Context, key string, index int, obj interface{}) {
|
|
|
|
user := GetUserFromContext(ctx)
|
|
|
|
logEntry := NewEditLogEntry(user.ID, "arrayAppend", loggable.TypeName(), loggable.GetID(), fmt.Sprintf("%s[%d]", key, index), "", fmt.Sprint(obj))
|
|
|
|
logEntry.Save()
|
|
|
|
}
|
|
|
|
|
|
|
|
// onRemove saves a log entry.
|
|
|
|
func onRemove(loggable Loggable, ctx aero.Context, key string, index int, obj interface{}) {
|
|
|
|
user := GetUserFromContext(ctx)
|
|
|
|
logEntry := NewEditLogEntry(user.ID, "arrayRemove", loggable.TypeName(), loggable.GetID(), fmt.Sprintf("%s[%d]", key, index), fmt.Sprint(obj), "")
|
|
|
|
logEntry.Save()
|
|
|
|
}
|