mirror of
https://github.com/zitadel/zitadel.git
synced 2024-12-12 02:54:20 +00:00
c5b99274d7
* commander * commander * selber! * move to packages * fix(errors): implement Is interface * test: command * test: commands * add init steps * setup tenant * add default step yaml * possibility to set password * merge v2 into v2-commander * fix: rename iam command side to instance * fix: rename iam command side to instance * fix: rename iam command side to instance * fix: rename iam command side to instance * fix: search query builder can filter events in memory * fix: filters for add member * fix(setup): add `ExternalSecure` to config * chore: name iam to instance * fix: matching * remove unsued func * base url * base url * test(command): filter funcs * test: commands * fix: rename orgiampolicy to domain policy * start from init * commands * config * fix indexes and add constraints * fixes * fix: merge conflicts * fix: protos * fix: md files * setup * add deprecated org iam policy again * typo * fix search query * fix filter * Apply suggestions from code review * remove custom org from org setup * add todos for verification * change apps creation * simplify package structure * fix error * move preparation helper for tests * fix unique constraints * fix config mapping in setup * fix error handling in encryption_keys.go * fix projection config * fix query from old views to projection * fix setup of mgmt api * set iam project and fix instance projection * imports Co-authored-by: Livio Amstutz <livio.a@gmail.com> Co-authored-by: fabi <fabienne.gerschwiler@gmail.com>
82 lines
1.4 KiB
Go
82 lines
1.4 KiB
Go
package errors
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"reflect"
|
|
)
|
|
|
|
var _ Error = (*CaosError)(nil)
|
|
|
|
type CaosError struct {
|
|
Parent error
|
|
Message string
|
|
ID string
|
|
}
|
|
|
|
func ThrowError(parent error, id, message string) error {
|
|
return CreateCaosError(parent, id, message)
|
|
}
|
|
|
|
func CreateCaosError(parent error, id, message string) *CaosError {
|
|
return &CaosError{
|
|
Parent: parent,
|
|
ID: id,
|
|
Message: message,
|
|
}
|
|
}
|
|
|
|
func (err *CaosError) Error() string {
|
|
if err.Parent != nil {
|
|
return fmt.Sprintf("ID=%s Message=%s Parent=(%v)", err.ID, err.Message, err.Parent)
|
|
}
|
|
return fmt.Sprintf("ID=%s Message=%s", err.ID, err.Message)
|
|
}
|
|
|
|
func (err *CaosError) Unwrap() error {
|
|
return err.GetParent()
|
|
}
|
|
|
|
func (err *CaosError) GetParent() error {
|
|
return err.Parent
|
|
}
|
|
|
|
func (err *CaosError) GetMessage() string {
|
|
return err.Message
|
|
}
|
|
|
|
func (err *CaosError) SetMessage(msg string) {
|
|
err.Message = msg
|
|
}
|
|
|
|
func (err *CaosError) GetID() string {
|
|
return err.ID
|
|
}
|
|
|
|
func (err *CaosError) Is(target error) bool {
|
|
t, ok := target.(*CaosError)
|
|
if !ok {
|
|
return false
|
|
}
|
|
if t.ID != "" && t.ID != err.ID {
|
|
return false
|
|
}
|
|
if t.Message != "" && t.Message != err.Message {
|
|
return false
|
|
}
|
|
if t.Parent != nil && !errors.Is(err.Parent, t.Parent) {
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
func (err *CaosError) As(target interface{}) bool {
|
|
_, ok := target.(**CaosError)
|
|
if !ok {
|
|
return false
|
|
}
|
|
reflect.Indirect(reflect.ValueOf(target)).Set(reflect.ValueOf(err))
|
|
return true
|
|
}
|