zitadel/internal/errors/caos_error.go
Silvan 33a4802425
feat(eventstore): Precondition (#69)
* start org

* refactor(eventstore): filter in sql for querier

* feat(eventstore): Aggregate precondition

preconditions are checked right before insert. Insert is still transaction save

* feat(eventstore): check preconditions in repository

* test(eventstore): test precondition in models

* test(eventstore): precondition-tests

* refactor(eventstore): querier as type

* fix(precondition): rename validation from precondition to validation

* test(eventstore): isErr func instead of wantErr bool

* fix: delete org files

* remove comment

Co-authored-by: Livio Amstutz <livio.a@gmail.com>
2020-04-28 16:01:00 +02:00

54 lines
955 B
Go

package errors
import (
"fmt"
)
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) GetID() string {
return err.ID
}
func (err *CaosError) Is(target error) bool {
_, ok := target.(*CaosError)
return ok
}