Documentation
¶
Index ¶
- Constants
- Variables
- func EncodeValidationIssues[T error](err T) map[string]interface{}
- func ErrorWithComponent(component ComponentName, err error) error
- func ErrorWithFieldPrefix(prefix *FieldDescriptor, err error) error
- func IsGenericConflictError(err error) bool
- func IsGenericForbiddenError(err error) bool
- func IsGenericNotFoundError(err error) bool
- func IsGenericNotImplementedError(err error) bool
- func IsGenericPreConditionFailedError(err error) bool
- func IsGenericRequestEntityTooLargeError(err error) bool
- func IsGenericStatusFailedDependencyError(err error) bool
- func IsGenericUnauthorizedError(err error) bool
- func IsGenericValidationError(err error) bool
- func NewGenericConflictError(err error) error
- func NewGenericForbiddenError(err error) error
- func NewGenericNotFoundError(err error) error
- func NewGenericNotImplementedError(err error) error
- func NewGenericPreConditionFailedError(err error) error
- func NewGenericRequestEntityTooLargeError(err error) error
- func NewGenericStatusFailedDependencyError(err error) error
- func NewGenericUnauthorizedError(err error) error
- func NewGenericValidationError(err error) error
- func NewNamespaceNotFoundError(namespace string) error
- func NewNillableGenericValidationError(err error) error
- func RequireValidationIssuesMatch(t *testing.T, expected ValidationIssues, actual ValidationIssues)
- func RespondProblem(problem Problem, w http.ResponseWriter)
- func Validate[T any](v T, validators ...ValidatorFunc[T]) error
- type Address
- type Annotations
- func (a Annotations) Clone() (Annotations, error)
- func (a Annotations) Equal(other Annotations) bool
- func (a Annotations) GetBool(key string) bool
- func (a Annotations) GetInt(key string) (int, bool)
- func (a Annotations) GetString(key string) (string, bool)
- func (a Annotations) Merge(m Annotations) (Annotations, error)
- func (a Annotations) Reset()
- type Attributes
- type CadenceComparable
- type CadenceList
- type Cadenced
- type CadencedModel
- type CadencedResourceRepo
- type Clonable
- type ComponentName
- type CountryCode
- type CustomValidator
- type Equaler
- type ErrorCode
- type ErrorExtension
- type ErrorSeverity
- type FieldArrIndex
- type FieldAttrValue
- type FieldDescriptor
- func (s FieldDescriptor) Clone() *FieldDescriptor
- func (p FieldDescriptor) GetAttributes() Attributes
- func (p *FieldDescriptor) JSONPath() string
- func (p *FieldDescriptor) MarshalJSON() ([]byte, error)
- func (p *FieldDescriptor) String() string
- func (s FieldDescriptor) Tree(cb func(t *FieldDescriptorTree) error) error
- func (s FieldDescriptor) WithAttributes(attrs Attributes) *FieldDescriptor
- func (s FieldDescriptor) WithExpression(exp FieldExpression) *FieldDescriptor
- func (p FieldDescriptor) WithPrefix(_prefix *FieldDescriptor) *FieldDescriptor
- type FieldDescriptorTree
- type FieldExpression
- type GenericConflictError
- type GenericError
- type GenericForbiddenError
- type GenericNotFoundError
- type GenericNotImplementedError
- type GenericPreConditionFailedError
- type GenericRequestEntityTooLargeError
- type GenericStatusFailedDependencyError
- type GenericUnauthorizedError
- type GenericValidationError
- type ManagedModel
- func (m ManagedModel) Equal(other ManagedModel) bool
- func (m ManagedModel) GetCreatedAt() time.Time
- func (m ManagedModel) GetDeletedAt() *time.Time
- func (m ManagedModel) GetUpdatedAt() time.Time
- func (m ManagedModel) IsDeleted() bool
- func (m ManagedModel) IsDeletedAt(t time.Time) bool
- func (m ManagedModel) Validate() error
- type ManagedModelWithID
- type ManagedResource
- type ManagedResourceInput
- type ManagedUniqueResource
- type Metadata
- type MetadataModel
- type Metadatad
- type MultiFieldAttrValue
- type NamespaceNotFoundError
- type NamespacedID
- type NamespacedIDOrKey
- type NamespacedKey
- type NamespacedModel
- type NoopServiceHook
- func (n NoopServiceHook[T]) PostCreate(context.Context, *T) error
- func (n NoopServiceHook[T]) PostDelete(context.Context, *T) error
- func (n NoopServiceHook[T]) PostUpdate(context.Context, *T) error
- func (n NoopServiceHook[T]) PreDelete(context.Context, *T) error
- func (n NoopServiceHook[T]) PreUpdate(context.Context, *T) error
- type Overlap
- type OverlapDetail
- type Percentage
- func (p Percentage) Add(other Percentage) Percentage
- func (p Percentage) ApplyMarkupTo(value alpacadecimal.Decimal) alpacadecimal.Decimal
- func (p Percentage) ApplyTo(value alpacadecimal.Decimal) alpacadecimal.Decimal
- func (p Percentage) MarshalJSON() ([]byte, error)
- func (p Percentage) String() string
- func (p *Percentage) UnmarshalJSON(data []byte) error
- type Problem
- type ProblemType
- type ServiceHook
- type ServiceHookRegistry
- func (r *ServiceHookRegistry[T]) PostCreate(ctx context.Context, t *T) error
- func (r *ServiceHookRegistry[T]) PostDelete(ctx context.Context, t *T) error
- func (r *ServiceHookRegistry[T]) PostUpdate(ctx context.Context, t *T) error
- func (r *ServiceHookRegistry[T]) PreDelete(ctx context.Context, t *T) error
- func (r *ServiceHookRegistry[T]) PreUpdate(ctx context.Context, t *T) error
- func (r *ServiceHookRegistry[T]) RegisterHooks(hooks ...ServiceHook[T])
- type ServiceHooks
- type StatusProblem
- type ValidationIssue
- func (i ValidationIssue) AsErrorExtension() ErrorExtension
- func (i ValidationIssue) Attributes() Attributes
- func (i ValidationIssue) Clone() ValidationIssue
- func (i ValidationIssue) Code() ErrorCode
- func (i ValidationIssue) Component() ComponentName
- func (i ValidationIssue) Equal(other ValidationIssue) bool
- func (i ValidationIssue) Error() string
- func (i ValidationIssue) Field() *FieldDescriptor
- func (i ValidationIssue) Is(target error) bool
- func (i ValidationIssue) MarshalJSON() ([]byte, error)
- func (i ValidationIssue) Message() string
- func (i ValidationIssue) SetAttributes(attrs Attributes) ValidationIssue
- func (i ValidationIssue) Severity() ErrorSeverity
- func (i ValidationIssue) Unwrap() error
- func (i ValidationIssue) With(opts ...ValidationIssueOption) ValidationIssue
- func (i ValidationIssue) WithAttr(key any, value any) ValidationIssue
- func (i ValidationIssue) WithAttrs(attrs Attributes) ValidationIssue
- func (i ValidationIssue) WithField(parts ...*FieldDescriptor) ValidationIssue
- func (i ValidationIssue) WithPathString(parts ...string) ValidationIssue
- func (i ValidationIssue) WithSeverity(s ErrorSeverity) ValidationIssue
- type ValidationIssueOption
- func WithAttribute(key any, value any) ValidationIssueOption
- func WithAttributes(attrs Attributes) ValidationIssueOption
- func WithComponent(component ComponentName) ValidationIssueOption
- func WithCriticalSeverity() ValidationIssueOption
- func WithField(parts ...*FieldDescriptor) ValidationIssueOption
- func WithFieldString(parts ...string) ValidationIssueOption
- func WithSeverity(severity ErrorSeverity) ValidationIssueOption
- func WithWarningSeverity() ValidationIssueOption
- type ValidationIssues
- type Validator
- type ValidatorFunc
- type VersionedModel
Constants ¶
const ProblemContentType = "application/problem+json"
ProblemContentType is the default content type for a Problem response
const ( // ProblemTypeDefault is the default problem type. ProblemTypeDefault = ProblemType("about:blank") )
const StatusClientClosedRequest = 499
StatusClientClosedRequest is the conventional status for a request canceled by its caller. It is not part of the HTTP standard or Go's net/http constants.
Variables ¶
var WildCard = wildCard{}
Functions ¶
func EncodeValidationIssues ¶
func ErrorWithComponent ¶
func ErrorWithComponent(component ComponentName, err error) error
ErrorWithComponent wraps an error with a component name. It returns nil if err is also nil. This can be used to add context to an error when we are crossing service boundaries.
func ErrorWithFieldPrefix ¶
func ErrorWithFieldPrefix(prefix *FieldDescriptor, err error) error
ErrorWithFieldPrefix wraps an error with a field prefix. It returns nil if err is also nil.
func IsGenericConflictError ¶
IsGenericConflictError returns true if the error is a GenericConflictError.
func IsGenericForbiddenError ¶
IsGenericForbiddenError returns true if the error is a GenericForbiddenError.
func IsGenericNotFoundError ¶
IsGenericNotFoundError returns true if the error is a GenericNotFoundError.
func IsGenericNotImplementedError ¶
IsGenericNotImplementedError returns true if the error is a GenericNotImplementedError.
func IsGenericValidationError ¶
IsGenericValidationError returns true if the error is a GenericValidationError.
func NewGenericConflictError ¶
NewGenericConflictError returns a new GenericConflictError.
func NewGenericForbiddenError ¶
NewGenericValidationError returns a new GenericForbiddenError.
func NewGenericNotFoundError ¶
NewGenericNotFoundError returns a new GenericNotFoundError.
func NewGenericNotImplementedError ¶
NewGenericNotImplementedError returns a new GenericNotImplementedError.
func NewGenericPreConditionFailedError ¶
GenericPreConditionFailedError
func NewGenericStatusFailedDependencyError ¶
GenericStatusFailedDependencyError
func NewGenericUnauthorizedError ¶
GenericUnauthorizedError
func NewGenericValidationError ¶
NewGenericValidationError returns a new GenericValidationError.
func NewNamespaceNotFoundError ¶
NewNamespaceNotFoundError returns a new NamespaceNotFoundError.
func NewNillableGenericValidationError ¶
NewNillableGenericValidationError returns a new GenericValidationError or nil if the error is nil. This is useful when someone passes in an errors.Join to the error.
func RequireValidationIssuesMatch ¶
func RequireValidationIssuesMatch(t *testing.T, expected ValidationIssues, actual ValidationIssues)
FIXME: dependency directions are messed up due to using same lexical package name across tests and package
func RespondProblem ¶
func RespondProblem(problem Problem, w http.ResponseWriter)
Respond will render the problem as JSON to the provided ResponseWriter.
func Validate ¶
func Validate[T any](v T, validators ...ValidatorFunc[T]) error
Types ¶
type Address ¶
type Address struct {
Country *CountryCode `json:"country,omitempty"`
PostalCode *string `json:"postalCode,omitempty"`
State *string `json:"state,omitempty"`
City *string `json:"city,omitempty"`
Line1 *string `json:"line1,omitempty"`
Line2 *string `json:"line2,omitempty"`
PhoneNumber *string `json:"phoneNumber,omitempty"`
}
type Annotations ¶
type Annotations map[string]interface{}
func (Annotations) Clone ¶
func (a Annotations) Clone() (Annotations, error)
func (Annotations) Equal ¶
func (a Annotations) Equal(other Annotations) bool
func (Annotations) GetBool ¶
func (a Annotations) GetBool(key string) bool
func (Annotations) Merge ¶
func (a Annotations) Merge(m Annotations) (Annotations, error)
func (Annotations) Reset ¶
func (a Annotations) Reset()
type Attributes ¶
func (Attributes) AsStringMap ¶
func (a Attributes) AsStringMap() map[string]any
AsStringMap converts Attributes into a map[string]any by: - keeping string keys as-is - stringifying comparable non-string keys as "<type>:<value>"
func (Attributes) Clone ¶
func (a Attributes) Clone() Attributes
func (Attributes) Merge ¶
func (a Attributes) Merge(m Attributes) Attributes
type CadenceComparable ¶
type CadenceComparable interface {
GetCadence() CadencedModel
}
type CadenceList ¶
type CadenceList[T CadenceComparable] []T
TODO[galexi]: Get rid of these types and use period.Period instead: - Add Intersection method to period.Period so all types implement it - Write helpers using period.Period CadenceList is a simple abstraction for a list of cadenced models. It is useful to validate the relationship between the cadences of the models, like their ordering, overlaps, continuity, etc.
func NewSortedCadenceList ¶
func NewSortedCadenceList[T CadenceComparable](cadences []T) CadenceList[T]
func (CadenceList[T]) Cadences ¶
func (t CadenceList[T]) Cadences() []T
Cadences returns the cadences in the timeline
func (CadenceList[T]) GetOverlaps ¶
func (t CadenceList[T]) GetOverlaps() []OverlapDetail[T]
GetOverlaps returns details about any overlaps between the cadences in the timeline.
func (CadenceList[T]) IsContinuous ¶
func (t CadenceList[T]) IsContinuous() bool
func (CadenceList[T]) IsSorted ¶
func (t CadenceList[T]) IsSorted() bool
type Cadenced ¶
type Cadenced interface {
// contains filtered or unexported methods
}
Cadenced represents a model with active from and to dates. The interval described is inclusive on the from side and exclusive on the to side.
type CadencedModel ¶
type CadencedModel struct {
ActiveFrom time.Time `json:"activeFrom"`
// ActiveTo CANNOT be BEFORE ActiveFrom (it can be the same, which would mean the entity is never active)
ActiveTo *time.Time `json:"activeTo"`
}
func NewCadencedModelFromPeriod ¶
func NewCadencedModelFromPeriod(period timeutil.OpenPeriod) (CadencedModel, error)
func (CadencedModel) AsPeriod ¶
func (c CadencedModel) AsPeriod() timeutil.OpenPeriod
func (CadencedModel) Equal ¶
func (c CadencedModel) Equal(other CadencedModel) bool
func (CadencedModel) GetCadence ¶
func (c CadencedModel) GetCadence() CadencedModel
func (CadencedModel) IsActiveAt ¶
func (c CadencedModel) IsActiveAt(t time.Time) bool
func (CadencedModel) IsZero ¶
func (c CadencedModel) IsZero() bool
type CadencedResourceRepo ¶
type ComponentName ¶
type ComponentName string
ComponentName is the name of an internal or external component/service the error is related to or originated from.
type CountryCode ¶
type CountryCode string
[ISO 3166-1](https://www.iso.org/iso-3166-country-codes.html) alpha-2 country code.
type CustomValidator ¶
type CustomValidator[T any] interface { ValidateWith(...ValidatorFunc[T]) error }
type ErrorExtension ¶
type ErrorSeverity ¶
type ErrorSeverity int8
ErrorSeverity describes the severity of an error.
const ( ErrorSeverityCritical ErrorSeverity = iota ErrorSeverityWarning )
func (ErrorSeverity) String ¶
func (s ErrorSeverity) String() string
func (ErrorSeverity) Values ¶
func (s ErrorSeverity) Values() []string
type FieldArrIndex ¶
type FieldArrIndex struct {
// contains filtered or unexported fields
}
func NewFieldArrIndex ¶
func NewFieldArrIndex(index int) FieldArrIndex
func (FieldArrIndex) IsCondition ¶
func (f FieldArrIndex) IsCondition() bool
func (FieldArrIndex) JSONPathExpression ¶
func (f FieldArrIndex) JSONPathExpression() string
func (FieldArrIndex) String ¶
func (f FieldArrIndex) String() string
type FieldAttrValue ¶
type FieldAttrValue struct {
// contains filtered or unexported fields
}
func NewFieldAttrValue ¶
func NewFieldAttrValue(field string, value any) FieldAttrValue
func (FieldAttrValue) IsCondition ¶
func (f FieldAttrValue) IsCondition() bool
func (FieldAttrValue) JSONPathExpression ¶
func (f FieldAttrValue) JSONPathExpression() string
func (FieldAttrValue) String ¶
func (f FieldAttrValue) String() string
type FieldDescriptor ¶
type FieldDescriptor struct {
// contains filtered or unexported fields
}
func NewFieldSelector ¶
func NewFieldSelector(field string) *FieldDescriptor
func NewFieldSelectorGroup ¶
func NewFieldSelectorGroup(selectors ...*FieldDescriptor) *FieldDescriptor
func (FieldDescriptor) Clone ¶
func (s FieldDescriptor) Clone() *FieldDescriptor
func (FieldDescriptor) GetAttributes ¶
func (p FieldDescriptor) GetAttributes() Attributes
func (*FieldDescriptor) JSONPath ¶
func (p *FieldDescriptor) JSONPath() string
func (*FieldDescriptor) MarshalJSON ¶
func (p *FieldDescriptor) MarshalJSON() ([]byte, error)
func (*FieldDescriptor) String ¶
func (p *FieldDescriptor) String() string
func (FieldDescriptor) Tree ¶
func (s FieldDescriptor) Tree(cb func(t *FieldDescriptorTree) error) error
Tree returns a treex.Tree[*FieldDescriptor] from the FieldDescriptor so it can be traversed
func (FieldDescriptor) WithAttributes ¶
func (s FieldDescriptor) WithAttributes(attrs Attributes) *FieldDescriptor
func (FieldDescriptor) WithExpression ¶
func (s FieldDescriptor) WithExpression(exp FieldExpression) *FieldDescriptor
func (FieldDescriptor) WithPrefix ¶
func (p FieldDescriptor) WithPrefix(_prefix *FieldDescriptor) *FieldDescriptor
type FieldDescriptorTree ¶
type FieldDescriptorTree struct {
*treex.Tree[*FieldDescriptor]
}
FieldDescriptorTree is a wrapper around treex.Tree[*FieldDescriptor] with methods meaningful for a FieldDescriptor
func (*FieldDescriptorTree) Leafs ¶
func (t *FieldDescriptorTree) Leafs() []*FieldDescriptor
func (*FieldDescriptorTree) Swap ¶
func (t *FieldDescriptorTree) Swap(old, new *FieldDescriptor) error
If called while walking the tree, you MUST start backtracking (return true) otherwise you'll keep walking the detached subtree!
type FieldExpression ¶
type GenericConflictError ¶
type GenericConflictError struct {
// contains filtered or unexported fields
}
func (*GenericConflictError) Error ¶
func (e *GenericConflictError) Error() string
func (*GenericConflictError) Unwrap ¶
func (e *GenericConflictError) Unwrap() error
type GenericError ¶
GenericError is an interface that all generic errors must implement.
type GenericForbiddenError ¶
type GenericForbiddenError struct {
// contains filtered or unexported fields
}
func (*GenericForbiddenError) Error ¶
func (e *GenericForbiddenError) Error() string
func (*GenericForbiddenError) Unwrap ¶
func (e *GenericForbiddenError) Unwrap() error
type GenericNotFoundError ¶
type GenericNotFoundError struct {
// contains filtered or unexported fields
}
func (*GenericNotFoundError) Error ¶
func (e *GenericNotFoundError) Error() string
func (*GenericNotFoundError) Unwrap ¶
func (e *GenericNotFoundError) Unwrap() error
type GenericNotImplementedError ¶
type GenericNotImplementedError struct {
// contains filtered or unexported fields
}
GenericNotImplementedError is returned when a meter is not found.
func (*GenericNotImplementedError) Error ¶
func (e *GenericNotImplementedError) Error() string
Error returns the error message.
func (*GenericNotImplementedError) Unwrap ¶
func (e *GenericNotImplementedError) Unwrap() error
Unwrap returns the wrapped error.
type GenericPreConditionFailedError ¶
type GenericPreConditionFailedError struct {
// contains filtered or unexported fields
}
func (*GenericPreConditionFailedError) Error ¶
func (e *GenericPreConditionFailedError) Error() string
func (*GenericPreConditionFailedError) Unwrap ¶
func (e *GenericPreConditionFailedError) Unwrap() error
type GenericRequestEntityTooLargeError ¶
type GenericRequestEntityTooLargeError struct {
// contains filtered or unexported fields
}
func (*GenericRequestEntityTooLargeError) Error ¶
func (e *GenericRequestEntityTooLargeError) Error() string
func (*GenericRequestEntityTooLargeError) Unwrap ¶
func (e *GenericRequestEntityTooLargeError) Unwrap() error
type GenericStatusFailedDependencyError ¶
type GenericStatusFailedDependencyError struct {
// contains filtered or unexported fields
}
func (*GenericStatusFailedDependencyError) Error ¶
func (e *GenericStatusFailedDependencyError) Error() string
func (*GenericStatusFailedDependencyError) Unwrap ¶
func (e *GenericStatusFailedDependencyError) Unwrap() error
type GenericUnauthorizedError ¶
type GenericUnauthorizedError struct {
// contains filtered or unexported fields
}
func (*GenericUnauthorizedError) Error ¶
func (e *GenericUnauthorizedError) Error() string
func (*GenericUnauthorizedError) Unwrap ¶
func (e *GenericUnauthorizedError) Unwrap() error
type GenericValidationError ¶
type GenericValidationError struct {
// contains filtered or unexported fields
}
GenericValidationError is returned when a meter is not found.
func (*GenericValidationError) Error ¶
func (e *GenericValidationError) Error() string
Error returns the error message.
func (*GenericValidationError) Unwrap ¶
func (e *GenericValidationError) Unwrap() error
Unwrap returns the wrapped error.
type ManagedModel ¶
type ManagedModel struct {
CreatedAt time.Time `json:"createdAt"`
// After creation the entity is considered updated.
UpdatedAt time.Time `json:"updatedAt"`
// Time of soft delete. If not null, the entity is considered deleted.
DeletedAt *time.Time `json:"deletedAt,omitempty"`
}
func (ManagedModel) Equal ¶
func (m ManagedModel) Equal(other ManagedModel) bool
func (ManagedModel) GetCreatedAt ¶
func (m ManagedModel) GetCreatedAt() time.Time
func (ManagedModel) GetDeletedAt ¶
func (m ManagedModel) GetDeletedAt() *time.Time
func (ManagedModel) GetUpdatedAt ¶
func (m ManagedModel) GetUpdatedAt() time.Time
func (ManagedModel) IsDeleted ¶
func (m ManagedModel) IsDeleted() bool
func (ManagedModel) IsDeletedAt ¶
func (m ManagedModel) IsDeletedAt(t time.Time) bool
func (ManagedModel) Validate ¶
func (m ManagedModel) Validate() error
type ManagedModelWithID ¶
type ManagedModelWithID struct {
ManagedModel `json:",inline" mapstructure:",squash"`
ID string `json:"id"`
}
func (ManagedModelWithID) Equal ¶
func (m ManagedModelWithID) Equal(other ManagedModelWithID) bool
func (ManagedModelWithID) GetID ¶
func (m ManagedModelWithID) GetID() string
func (ManagedModelWithID) Validate ¶
func (m ManagedModelWithID) Validate() error
type ManagedResource ¶
type ManagedResource struct {
NamespacedModel `json:",inline" mapstructure:",squash"`
ManagedModel `json:",inline" mapstructure:",squash"`
// ID is the unique identifier for Resource.
ID string `json:"id"`
Description *string `json:"description,omitempty"`
Name string `json:"name"`
}
func NewManagedResource ¶
func NewManagedResource(input ManagedResourceInput) ManagedResource
func (ManagedResource) GetDescription ¶
func (m ManagedResource) GetDescription() *string
func (ManagedResource) GetID ¶
func (m ManagedResource) GetID() string
func (ManagedResource) GetName ¶
func (m ManagedResource) GetName() string
func (ManagedResource) Validate ¶
func (r ManagedResource) Validate() error
type ManagedResourceInput ¶
type ManagedResourceInput struct {
ID string
Namespace string
CreatedAt time.Time
UpdatedAt time.Time
DeletedAt *time.Time
Name string
Description *string
}
func (ManagedResourceInput) Validate ¶
func (r ManagedResourceInput) Validate() error
type ManagedUniqueResource ¶
type ManagedUniqueResource struct {
NamespacedModel `json:",inline" mapstructure:",squash"`
ManagedModel `json:",inline" mapstructure:",squash"`
// ID is the unique identifier for Resource.
ID string `json:"id"`
// Key is the unique key for Resource.
Key string `json:"key"`
}
type Metadata ¶
func NewMetadata ¶
type MetadataModel ¶
type MetadataModel struct {
Metadata Metadata `json:"metadata,omitempty"`
}
type MultiFieldAttrValue ¶
type MultiFieldAttrValue struct {
// contains filtered or unexported fields
}
func NewMultiFieldAttrValue ¶
func NewMultiFieldAttrValue(values ...FieldAttrValue) MultiFieldAttrValue
func (MultiFieldAttrValue) IsCondition ¶
func (m MultiFieldAttrValue) IsCondition() bool
func (MultiFieldAttrValue) JSONPathExpression ¶
func (m MultiFieldAttrValue) JSONPathExpression() string
func (MultiFieldAttrValue) String ¶
func (m MultiFieldAttrValue) String() string
type NamespaceNotFoundError ¶
type NamespaceNotFoundError struct {
// contains filtered or unexported fields
}
IsNamespaceNotFoundError returns true if the error is a NamespaceNotFoundError.
func (*NamespaceNotFoundError) Error ¶
func (e *NamespaceNotFoundError) Error() string
func (*NamespaceNotFoundError) Unwrap ¶
func (e *NamespaceNotFoundError) Unwrap() error
Unwrap returns the wrapped error.
type NamespacedID ¶
func (NamespacedID) Validate ¶
func (i NamespacedID) Validate() error
type NamespacedIDOrKey ¶
type NamespacedIDOrKey struct {
Namespace string `json:"namespace"`
IDOrKey string `json:"idOrKey"`
}
NamespacedIDOrKey represents a namespaced id or key (when we don't know if a specific entity is either a key or an id) If the type of entity is known please use the ref package or the NamespacedID or the NamespacedKey types
func (NamespacedIDOrKey) Validate ¶
func (n NamespacedIDOrKey) Validate() error
type NamespacedKey ¶
func (NamespacedKey) Validate ¶
func (k NamespacedKey) Validate() error
type NamespacedModel ¶
type NamespacedModel struct {
Namespace string `json:"namespace"`
}
func (NamespacedModel) GetNamespace ¶
func (m NamespacedModel) GetNamespace() string
func (NamespacedModel) Validate ¶
func (m NamespacedModel) Validate() error
type NoopServiceHook ¶
type NoopServiceHook[T any] struct{}
func (NoopServiceHook[T]) PostCreate ¶
func (n NoopServiceHook[T]) PostCreate(context.Context, *T) error
func (NoopServiceHook[T]) PostDelete ¶
func (n NoopServiceHook[T]) PostDelete(context.Context, *T) error
func (NoopServiceHook[T]) PostUpdate ¶
func (n NoopServiceHook[T]) PostUpdate(context.Context, *T) error
type OverlapDetail ¶
type OverlapDetail[T CadenceComparable] struct { Index1 int Index2 int Item1 T Item2 T }
type Percentage ¶
type Percentage struct {
alpacadecimal.Decimal
}
func NewPercentage ¶
func NewPercentage[T float64 | int | alpacadecimal.Decimal](value T) Percentage
NewPercentage creates a new Percentage from a numeric value, representation: 50% is represented as 50
func (Percentage) Add ¶
func (p Percentage) Add(other Percentage) Percentage
func (Percentage) ApplyMarkupTo ¶
func (p Percentage) ApplyMarkupTo(value alpacadecimal.Decimal) alpacadecimal.Decimal
ApplyMarkupTo applies the percentage to a value as a markup, e.g: NewPercentage(50).ApplyMarkupTo(100) = 150
func (Percentage) ApplyTo ¶
func (p Percentage) ApplyTo(value alpacadecimal.Decimal) alpacadecimal.Decimal
ApplyTo applies the percentage to a value, e.g: NewPercentage(50).ApplyTo(100) = 50
func (Percentage) MarshalJSON ¶
func (p Percentage) MarshalJSON() ([]byte, error)
func (Percentage) String ¶
func (p Percentage) String() string
func (*Percentage) UnmarshalJSON ¶
func (p *Percentage) UnmarshalJSON(data []byte) error
type Problem ¶
type Problem interface {
Respond(w http.ResponseWriter)
Error() string
ProblemType() ProblemType
ProblemTitle() string
ProblemStatus() int
}
Problem is the RFC 7807 response body.
type ProblemType ¶
type ProblemType string
ProblemType contains a URI that identifies the problem type. This URI will, ideally, contain human-readable documentation for the problem when de-referenced.
type ServiceHook ¶
type ServiceHookRegistry ¶
type ServiceHookRegistry[T any] struct { // contains filtered or unexported fields }
func NewServiceHookRegistry ¶
func NewServiceHookRegistry[T any]() *ServiceHookRegistry[T]
func (*ServiceHookRegistry[T]) PostCreate ¶
func (r *ServiceHookRegistry[T]) PostCreate(ctx context.Context, t *T) error
func (*ServiceHookRegistry[T]) PostDelete ¶
func (r *ServiceHookRegistry[T]) PostDelete(ctx context.Context, t *T) error
func (*ServiceHookRegistry[T]) PostUpdate ¶
func (r *ServiceHookRegistry[T]) PostUpdate(ctx context.Context, t *T) error
func (*ServiceHookRegistry[T]) PreDelete ¶
func (r *ServiceHookRegistry[T]) PreDelete(ctx context.Context, t *T) error
func (*ServiceHookRegistry[T]) PreUpdate ¶
func (r *ServiceHookRegistry[T]) PreUpdate(ctx context.Context, t *T) error
func (*ServiceHookRegistry[T]) RegisterHooks ¶
func (r *ServiceHookRegistry[T]) RegisterHooks(hooks ...ServiceHook[T])
type ServiceHooks ¶
type ServiceHooks[T any] interface { RegisterHooks(...ServiceHook[T]) }
type StatusProblem ¶
type StatusProblem struct {
Err error `json:"-"` // low-level runtime error
// Type is a URI reference that identifies the problem type.
Type ProblemType `json:"type"`
// Title is a short, human-readable summary of the problem type.
Title string `json:"title"`
// Status is the HTTP status code generated by the origin server for this occurrence of the problem.
Status int `json:"status"`
// Detail is a human-readable explanation specific to this occurrence of the problem.
Detail string `json:"detail,omitempty"`
// Instance is a URI reference that identifies the specific occurrence of the problem.
Instance string `json:"instance,omitempty"`
// Extension fields are allowed by spec, see https://datatracker.ietf.org/doc/html/rfc7807#section-3.2
Extensions map[string]interface{} `json:"extensions,omitempty"`
}
StatusProblem is the RFC 7807 response body without additional fields.
func NewStatusProblem ¶
func NewStatusProblem(ctx context.Context, err error, status int) *StatusProblem
NewStatusProblem will generate a problem for the provided HTTP status code, or 499 when a cancellation error coincides with a canceled caller context. The Title is the default Go status text, or "Client Closed Request" for 499.
func (*StatusProblem) Error ¶
func (p *StatusProblem) Error() string
func (*StatusProblem) ProblemStatus ¶
func (p *StatusProblem) ProblemStatus() int
func (*StatusProblem) ProblemTitle ¶
func (p *StatusProblem) ProblemTitle() string
func (*StatusProblem) ProblemType ¶
func (p *StatusProblem) ProblemType() ProblemType
func (*StatusProblem) RawError ¶
func (p *StatusProblem) RawError() error
func (*StatusProblem) Respond ¶
func (p *StatusProblem) Respond(w http.ResponseWriter)
Respond will render the problem as JSON to the provided ResponseWriter.
type ValidationIssue ¶
type ValidationIssue struct {
// contains filtered or unexported fields
}
func NewValidationError ¶
func NewValidationError(code ErrorCode, message string) ValidationIssue
NewValidationError returns a new ValidationIssue with code and message and its severity set to SeverityCritical.
func NewValidationIssue ¶
func NewValidationIssue(code ErrorCode, message string, opts ...ValidationIssueOption) ValidationIssue
NewValidationIssue returns a new ValidationIssue with code and message.
func NewValidationWarning ¶
func NewValidationWarning(code ErrorCode, message string) ValidationIssue
NewValidationWarning returns a new ValidationIssue with code and message and its severity set to SeverityWarning.
func (ValidationIssue) AsErrorExtension ¶
func (i ValidationIssue) AsErrorExtension() ErrorExtension
func (ValidationIssue) Attributes ¶
func (i ValidationIssue) Attributes() Attributes
Attributes returns a shallow-copy of the underlying attributes map.
func (ValidationIssue) Clone ¶
func (i ValidationIssue) Clone() ValidationIssue
func (ValidationIssue) Code ¶
func (i ValidationIssue) Code() ErrorCode
func (ValidationIssue) Component ¶
func (i ValidationIssue) Component() ComponentName
func (ValidationIssue) Equal ¶
func (i ValidationIssue) Equal(other ValidationIssue) bool
func (ValidationIssue) Error ¶
func (i ValidationIssue) Error() string
func (ValidationIssue) Field ¶
func (i ValidationIssue) Field() *FieldDescriptor
func (ValidationIssue) Is ¶
func (i ValidationIssue) Is(target error) bool
Is is required in addition to Unwrap because ValidationIssue is not comparable: it contains map-backed attributes, so errors.Is cannot use == when it reaches a wrapped ValidationIssue in the chain.
func (ValidationIssue) MarshalJSON ¶
func (i ValidationIssue) MarshalJSON() ([]byte, error)
func (ValidationIssue) Message ¶
func (i ValidationIssue) Message() string
func (ValidationIssue) SetAttributes ¶
func (i ValidationIssue) SetAttributes(attrs Attributes) ValidationIssue
func (ValidationIssue) Severity ¶
func (i ValidationIssue) Severity() ErrorSeverity
func (ValidationIssue) Unwrap ¶
func (i ValidationIssue) Unwrap() error
func (ValidationIssue) With ¶
func (i ValidationIssue) With(opts ...ValidationIssueOption) ValidationIssue
func (ValidationIssue) WithAttr ¶
func (i ValidationIssue) WithAttr(key any, value any) ValidationIssue
func (ValidationIssue) WithAttrs ¶
func (i ValidationIssue) WithAttrs(attrs Attributes) ValidationIssue
func (ValidationIssue) WithField ¶
func (i ValidationIssue) WithField(parts ...*FieldDescriptor) ValidationIssue
func (ValidationIssue) WithPathString ¶
func (i ValidationIssue) WithPathString(parts ...string) ValidationIssue
func (ValidationIssue) WithSeverity ¶
func (i ValidationIssue) WithSeverity(s ErrorSeverity) ValidationIssue
type ValidationIssueOption ¶
type ValidationIssueOption func(*ValidationIssue)
func WithAttribute ¶
func WithAttribute(key any, value any) ValidationIssueOption
func WithAttributes ¶
func WithAttributes(attrs Attributes) ValidationIssueOption
func WithComponent ¶
func WithComponent(component ComponentName) ValidationIssueOption
func WithCriticalSeverity ¶
func WithCriticalSeverity() ValidationIssueOption
func WithField ¶
func WithField(parts ...*FieldDescriptor) ValidationIssueOption
func WithFieldString ¶
func WithFieldString(parts ...string) ValidationIssueOption
func WithSeverity ¶
func WithSeverity(severity ErrorSeverity) ValidationIssueOption
func WithWarningSeverity ¶
func WithWarningSeverity() ValidationIssueOption
type ValidationIssues ¶
type ValidationIssues []ValidationIssue
func AsValidationIssues ¶
func AsValidationIssues(errIn error) (ValidationIssues, error)
AsValidationIssues returns a list of ValidationIssue from the input error or the errIn error in case: * the errIn is `nil` * any leaf errors in the error tree that are not wrapped with WrapWithComponent or WrapWithFieldPrefix functions are treated as critical errors
func (ValidationIssues) AsError ¶
func (v ValidationIssues) AsError() error
func (ValidationIssues) AsErrorExtensions ¶
func (v ValidationIssues) AsErrorExtensions() []ErrorExtension
func (ValidationIssues) Clone ¶
func (v ValidationIssues) Clone() ValidationIssues
func (ValidationIssues) Error ¶
func (v ValidationIssues) Error() string
func (ValidationIssues) WithSeverityOrHigher ¶
func (v ValidationIssues) WithSeverityOrHigher(severity ErrorSeverity) ValidationIssues
type Validator ¶
type Validator interface {
// Validate returns an error if the instance of the Validator is invalid.
Validate() error
}
type ValidatorFunc ¶
type VersionedModel ¶
type VersionedModel struct {
// Key is the unique identifier of the entity across its versions.
// Might be generated by the system or provided by the user.
Key string `json:"key,omitempty"`
// Version is the integer sequential version of the entity, starting from 1.
Version int `json:"version,omitempty"`
}
VersionedModel represents a versionable entity. With each new version the sequence is incremented while the key remains the same. Key + Version uniquely identifies an entity.