errors

package
v0.23.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 6, 2025 License: MIT Imports: 2 Imported by: 0

Documentation

Overview

Package errors provides custom error types for the sync package

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Component added in v0.9.0

func Component(component string) componentArg

Component creates a component string argument for E() that's clearly distinguished from context messages

func IsRetryable

func IsRetryable(err error) bool

IsRetryable checks if an error is a retryable SyncError

func WrapOpComponent added in v0.16.0

func WrapOpComponent(err error, op, component string) error

WrapOpComponent provides a convenience helper to wrap errors with consistent Op and Component propagation. It avoids repetition when creating structured errors throughout the codebase. If err is nil, returns nil.

func WrapOpComponentKind added in v0.16.0

func WrapOpComponentKind(err error, op, component string, kind Kind) error

WrapOpComponentKind provides a convenience helper to wrap errors with Op, Component, and Kind. If err is nil, returns nil.

Types

type ErrorCode

type ErrorCode string

ErrorCode represents the type of error that occurred

const (
	ErrCodeNetworkFailure    ErrorCode = "NETWORK_FAILURE"
	ErrCodeStorageFailure    ErrorCode = "STORAGE_FAILURE"
	ErrCodeConflictFailure   ErrorCode = "CONFLICT_FAILURE"
	ErrCodeValidationFailure ErrorCode = "VALIDATION_FAILURE"
)

type Kind added in v0.9.0

type Kind string

Kind represents the category of error for structured error handling

const (
	KindInvalid          Kind = "INVALID"            // Invalid input or request
	KindNotFound         Kind = "NOT_FOUND"          // Resource not found
	KindPermission       Kind = "PERMISSION"         // Permission denied
	KindInternal         Kind = "INTERNAL"           // Internal server error
	KindTimeout          Kind = "TIMEOUT"            // Operation timeout
	KindUnavailable      Kind = "UNAVAILABLE"        // Service unavailable
	KindConflict         Kind = "CONFLICT"           // Resource conflict
	KindTooLarge         Kind = "TOO_LARGE"          // Request too large
	KindMethodNotAllowed Kind = "METHOD_NOT_ALLOWED" // HTTP method not allowed
)

type Operation

type Operation string

Operation represents the type of sync operation

const (
	OpSync            Operation = "sync"
	OpPush            Operation = "push"
	OpPull            Operation = "pull"
	OpStore           Operation = "store"
	OpLoad            Operation = "load"
	OpConflictResolve Operation = "conflict_resolve"
	OpTransport       Operation = "transport"
	OpClose           Operation = "close"
	// Projection operations
	OpProjection      Operation = "projection"
	OpProjectionApply Operation = "projection_apply"
	OpOffsetStore     Operation = "offset_store"
)

func Op added in v0.9.0

func Op(op string) Operation

Op creates an Operation argument for E()

type SyncError

type SyncError struct {
	// Operation during which the error occurred
	Op Operation

	// Component that generated the error (e.g., "store", "transport")
	Component string

	// Underlying error
	Err error

	// Whether the operation can be retried
	Retryable bool

	// Error code for the error type
	Code ErrorCode

	// Kind represents the category of error
	Kind Kind

	// Metadata for additional context
	Metadata map[string]interface{}
}

SyncError represents an error that occurred during synchronization

func E added in v0.9.0

func E(args ...interface{}) *SyncError

E creates a structured error using a builder pattern. This function provides a flexible way to create errors with multiple attributes. Arguments can be provided in any order and include:

  • Operation: specifies the operation during which the error occurred
  • Component: specifies the component that generated the error (string)
  • Kind: specifies the category of error
  • error: the underlying error
  • string: additional context message

Example:

err := E(Op("httptransport.handlePush"), Component("httptransport"), Kind(KindInvalid), underlyingErr, "decode request")

func New

func New(op Operation, err error) *SyncError

New creates a new SyncError

func NewConflictError

func NewConflictError(op Operation, cause error) *SyncError

NewConflictError creates a new conflict-related SyncError

func NewNetworkError

func NewNetworkError(op Operation, cause error) *SyncError

NewNetworkError creates a new network-related SyncError

func NewRetryable

func NewRetryable(op Operation, err error) *SyncError

NewRetryable creates a new retryable SyncError

func NewStorageError

func NewStorageError(op Operation, cause error) *SyncError

NewStorageError creates a new storage-related SyncError

func NewValidationError

func NewValidationError(op Operation, cause error) *SyncError

NewValidationError creates a new validation-related SyncError

func NewWithComponent

func NewWithComponent(op Operation, component string, err error) *SyncError

NewWithComponent creates a new SyncError with component information

func (*SyncError) Error

func (e *SyncError) Error() string

func (*SyncError) Unwrap

func (e *SyncError) Unwrap() error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL