diff --git a/pkg/model/audit_event.go b/pkg/model/audit_event.go new file mode 100644 index 0000000..998f76d --- /dev/null +++ b/pkg/model/audit_event.go @@ -0,0 +1,53 @@ +package model + +import ( + "encoding/json" + "time" +) + +type AuditEventType int32 + +// User clicked "Submit", "Accept" etc +const AuditEventTypeAction AuditEventType = 0 +type AuditEventDataAction struct { + TargetStatus uint32 `json:"target_status"` +} + +// User wrote a comment +const AuditEventTypeComment AuditEventType = 1 +type AuditEventDataComment struct { + Comment string `json:"comment"` +} + +// User changed Model +const AuditEventTypeChangeModel AuditEventType = 2 +type AuditEventDataChangeModel struct { + OldModelID uint64 `json:"old_model_id"` + OldModelVersion uint64 `json:"old_model_version"` + NewModelID uint64 `json:"new_model_id"` + NewModelVersion uint64 `json:"new_model_version"` +} +// Validator validates model +const AuditEventTypeChangeValidatedModel AuditEventType = 3 +type AuditEventDataChangeValidatedModel struct { + ValidatedModelID uint64 `json:"validated_model_id"` + ValidatedModelVersion uint64 `json:"validated_model_version"` +} + +// User changed DisplayName / Creator +const AuditEventTypeChangeDisplayName AuditEventType = 4 +const AuditEventTypeChangeCreator AuditEventType = 5 +type AuditEventDataChangeName struct { + OldName string `json:"old_name"` + NewName string `json:"new_name"` +} + +type AuditEvent struct { + ID int64 `gorm:"primaryKey"` + CreatedAt time.Time + User uint64 + ResourceType ResourceType // is this a submission or is it a mapfix + ResourceID int64 // submission / mapfix / map ID + EventType AuditEventType + EventData json.RawMessage `gorm:"type:jsonb"` +}