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"` } // Validator had an error const AuditEventTypeError AuditEventType = 6 type AuditEventDataError struct { Error string `json:"error"` } 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"` }