diff --git a/audit/audit.go b/audit/audit.go index 6d2968832be7f6b62b5a4f83b7e984bc59f66234..6146f093cf995d81a78bb134a07b1ee7c03f07d9 100644 --- a/audit/audit.go +++ b/audit/audit.go @@ -4,35 +4,24 @@ import ( "reflect" "regexp" "strings" - "time" "github.com/r3labs/diff/v2" "gitlab.com/uafrica/go-utils/reflection" "gitlab.com/uafrica/go-utils/string_utils" ) -type Event struct { - ID int64 `json:"id"` - ObjectID string `json:"object_id"` - Type string `json:"type"` - ProviderID int64 `json:"provider_id"` - Source string `json:"source"` - Timestamp time.Time `json:"timestamp"` - Change map[string]interface{} `json:"change"` -} - type FieldChange struct { From interface{} `json:"change_from"` To interface{} `json:"change_to"` } -func GetAuditEvent(original interface{}, new interface{}, username *string) (Event, error) { +func GetChanges(original interface{}, new interface{}) (map[string]interface{}, error) { + changes := map[string]interface{}{} changelog, err := diff.Diff(original, new) if err != nil { - return Event{}, err + return changes, err } - changes := map[string]interface{}{} for _, change := range changelog { if len(change.Path) == 1 { @@ -119,38 +108,7 @@ func GetAuditEvent(original interface{}, new interface{}, username *string) (Eve } } - objectID := getIntValue(original, "ID") - - if objectID == 0 { - objectID = getIntValue(new, "ID") - } - - objectIDString := string_utils.Int64ToString(objectID) - - if objectIDString == "0" { - objectIDString = getStringValue(original, "Username") - } - - if objectIDString == "" { - objectIDString = getStringValue(new, "Username") - } - - providerID := getIntValue(original, "ProviderID") - if providerID == 0 { - providerID = getIntValue(new, "ProviderID") - } - - auditEvent := Event{ - ObjectID: objectIDString, - ProviderID: providerID, - Source: "SYSTEM", - Timestamp: time.Now(), - Change: changes, - } - if username != nil { - auditEvent.Source = *username - } - return auditEvent, nil + return changes, nil } var matchFirstCap = regexp.MustCompile("(.)([A-Z][a-z]+)") @@ -162,7 +120,7 @@ func ToSnakeCase(str string) string { return strings.ToLower(snake) } -func getIntValue(object interface{}, key string) int64 { +func GetIntValue(object interface{}, key string) int64 { structValue := reflect.ValueOf(object) if structValue.Kind() == reflect.Struct { field := structValue.FieldByName(key) @@ -172,7 +130,7 @@ func getIntValue(object interface{}, key string) int64 { return 0 } -func getStringValue(object interface{}, key string) string { +func GetStringValue(object interface{}, key string) string { structValue := reflect.ValueOf(object) if structValue.Kind() == reflect.Struct { field := structValue.FieldByName(key) diff --git a/string_utils/string_utils.go b/string_utils/string_utils.go index 72e59ff6257770f19a7b02c083cc8dfb33b29c48..2f685c3ca8795902def445372ffc0d9c660cf4d2 100644 --- a/string_utils/string_utils.go +++ b/string_utils/string_utils.go @@ -1,7 +1,6 @@ package string_utils import ( - _ "crypto/md5" "encoding/json" "fmt" "regexp" @@ -197,7 +196,6 @@ func StringTrimQuotes(stringToTrim string) string { return stringToTrim } - func KeyToHumanReadable(s string) string { s = strings.TrimSpace(s)