errors

package
v1.0.3 Latest Latest
Warning

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

Go to latest
Published: Aug 21, 2025 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BusinessError

type BusinessError struct {
	Rule        string                 `json:"rule"`
	Description string                 `json:"description"`
	Context     map[string]interface{} `json:"context,omitempty"`
}

BusinessError representa un error de lógica de negocio

type DomainError

type DomainError struct {
	// Información básica del error
	ID       string        `json:"id"`
	Code     string        `json:"code"`
	Message  string        `json:"message"`
	Category ErrorCategory `json:"category"`
	Severity ErrorSeverity `json:"severity"`

	// Información de contexto
	Context *ErrorContext `json:"context"`

	// Stack trace y debugging
	StackTrace *StackTrace `json:"stack_trace,omitempty"`
	Cause      error       `json:"-"` // Error original (no serializable)
	CauseMsg   string      `json:"cause,omitempty"`

	// Información HTTP
	StatusCode int `json:"-"`

	// Información adicional
	Details   map[string]interface{} `json:"details,omitempty"`
	Timestamp time.Time              `json:"timestamp"`
	Retryable bool                   `json:"retryable"`
	Transient bool                   `json:"transient"`

	// Información de debugging
	Fingerprint string   `json:"fingerprint,omitempty"` // Para agrupar errores similares
	Tags        []string `json:"tags,omitempty"`
}

DomainError representa un error de dominio con información rica para debugging

func NewAlreadyExistsError

func NewAlreadyExistsError(resource string, identifier interface{}) *DomainError

NewAlreadyExistsError crea un error de recurso ya existente

func NewAuthenticationError

func NewAuthenticationError(reason string) *DomainError

NewAuthenticationError crea un error de autenticación

func NewAuthorizationError

func NewAuthorizationError(resource string, action string) *DomainError

NewAuthorizationError crea un error de autorización

func NewBusinessError

func NewBusinessError(code, message string) *DomainError

NewBusinessError crea un error de lógica de negocio

func NewCircuitBreakerOpenError

func NewCircuitBreakerOpenError(service string) *DomainError

NewCircuitBreakerOpenError crea un error de circuit breaker abierto

func NewConfigurationError

func NewConfigurationError(setting string, reason string) *DomainError

NewConfigurationError crea un error de configuración

func NewDatabaseError

func NewDatabaseError(operation string, cause error) *DomainError

NewDatabaseError crea un error de base de datos

func NewDomainError

func NewDomainError(code, message string, category ErrorCategory, severity ErrorSeverity) *DomainError

NewDomainError crea un nuevo error de dominio

func NewExpiredTokenError

func NewExpiredTokenError(tokenType string) *DomainError

NewExpiredTokenError crea un error de token expirado

func NewExternalServiceError

func NewExternalServiceError(service string, cause error) *DomainError

NewExternalServiceError crea un error de servicio externo

func NewInsufficientPermissionsError

func NewInsufficientPermissionsError(action string, resource string) *DomainError

NewInsufficientPermissionsError crea un error de permisos insuficientes

func NewInternalError

func NewInternalError(message string, cause error) *DomainError

NewInternalError crea un error interno del servidor

func NewInvalidFormatError

func NewInvalidFormatError(field string, value interface{}, expectedFormat string) *DomainError

NewInvalidFormatError crea un error de formato inválido

func NewInvalidTokenError

func NewInvalidTokenError(tokenType string) *DomainError

NewInvalidTokenError crea un error de token inválido

func NewInvalidValueError

func NewInvalidValueError(field string, value interface{}, validValues []interface{}) *DomainError

NewInvalidValueError crea un error de valor inválido

func NewNotFoundError

func NewNotFoundError(resource string, identifier interface{}) *DomainError

NewNotFoundError crea un error de recurso no encontrado

func NewRateLimitExceededError

func NewRateLimitExceededError(limit int, windowSeconds int) *DomainError

NewRateLimitExceededError crea un error de rate limit excedido

func NewRequiredFieldError

func NewRequiredFieldError(field string) *DomainError

NewRequiredFieldError crea un error de campo requerido

func NewServiceUnavailableError

func NewServiceUnavailableError(service string) *DomainError

NewServiceUnavailableError crea un error de servicio no disponible

func NewTimeoutError

func NewTimeoutError(operation string, timeoutSeconds int) *DomainError

NewTimeoutError crea un error de timeout

func NewValidationError

func NewValidationError(message string, field string, value interface{}) *DomainError

NewValidationError crea un error de validación

func (*DomainError) Error

func (e *DomainError) Error() string

Error implementa la interfaz error

func (*DomainError) GenerateFingerprint

func (e *DomainError) GenerateFingerprint() string

GenerateFingerprint genera un fingerprint único para agrupar errores similares

func (*DomainError) Is

func (e *DomainError) Is(target error) bool

Is permite comparación de errores

func (*DomainError) IsRetryable

func (e *DomainError) IsRetryable() bool

IsRetryable indica si el error puede ser reintentado

func (*DomainError) IsTransient

func (e *DomainError) IsTransient() bool

IsTransient indica si el error es transitorio

func (*DomainError) ToHTTPResponse

func (e *DomainError) ToHTTPResponse() HTTPErrorResponse

ToHTTPResponse convierte el error a respuesta HTTP

func (*DomainError) ToJSON

func (e *DomainError) ToJSON() ([]byte, error)

ToJSON serializa el error a JSON

func (*DomainError) Unwrap

func (e *DomainError) Unwrap() error

Unwrap permite unwrapping del error original

func (*DomainError) WithCause

func (e *DomainError) WithCause(cause error) *DomainError

WithCause añade la causa del error

func (*DomainError) WithContext

func (e *DomainError) WithContext(ctx *ErrorContext) *DomainError

WithContext añade contexto al error

func (*DomainError) WithMetadata

func (e *DomainError) WithMetadata(key string, value interface{}) *DomainError

WithMetadata añade metadata al error

func (*DomainError) WithStackTrace

func (e *DomainError) WithStackTrace(skip int) *DomainError

WithStackTrace añade stack trace al error

func (*DomainError) WithTags

func (e *DomainError) WithTags(tags ...string) *DomainError

WithTags añade tags para clasificación

type ErrorCategory

type ErrorCategory string

ErrorCategory define la categoría del error

const (
	CategoryValidation     ErrorCategory = "validation"
	CategoryBusiness       ErrorCategory = "business"
	CategoryTechnical      ErrorCategory = "technical"
	CategorySecurity       ErrorCategory = "security"
	CategoryIntegration    ErrorCategory = "integration"
	CategoryPerformance    ErrorCategory = "performance"
	CategoryInfrastructure ErrorCategory = "infrastructure"
)

type ErrorContext

type ErrorContext struct {
	Service       string                 `json:"service"`
	Version       string                 `json:"version"`
	RequestID     string                 `json:"request_id"`
	CorrelationID string                 `json:"correlation_id"`
	UserID        string                 `json:"user_id,omitempty"`
	TenantID      string                 `json:"tenant_id,omitempty"`
	SessionID     string                 `json:"session_id,omitempty"`
	Timestamp     time.Time              `json:"timestamp"`
	Environment   string                 `json:"environment"`
	Metadata      map[string]interface{} `json:"metadata,omitempty"`
	TraceID       string                 `json:"trace_id,omitempty"`
	SpanID        string                 `json:"span_id,omitempty"`
}

ErrorContext proporciona contexto rico para errores

type ErrorSeverity

type ErrorSeverity string

ErrorSeverity define la severidad del error

const (
	SeverityLow      ErrorSeverity = "low"
	SeverityMedium   ErrorSeverity = "medium"
	SeverityHigh     ErrorSeverity = "high"
	SeverityCritical ErrorSeverity = "critical"
)

type HTTPError

type HTTPError struct {
	Code          string                 `json:"code"`
	Message       string                 `json:"message"`
	Category      string                 `json:"category"`
	Severity      string                 `json:"severity"`
	Details       map[string]interface{} `json:"details,omitempty"`
	Field         string                 `json:"field,omitempty"`
	Value         interface{}            `json:"value,omitempty"`
	RequestID     string                 `json:"request_id,omitempty"`
	CorrelationID string                 `json:"correlation_id,omitempty"`
	TraceID       string                 `json:"trace_id,omitempty"`
	Timestamp     time.Time              `json:"timestamp"`
	Retryable     bool                   `json:"retryable"`
	Transient     bool                   `json:"transient"`
	HelpURL       string                 `json:"help_url,omitempty"`
}

HTTPError representa un error HTTP para respuestas API

type HTTPErrorResponse

type HTTPErrorResponse struct {
	Error      HTTPError `json:"error"`
	StatusCode int       `json:"-"`
}

HTTPErrorResponse representa la respuesta de error completa

type IntegrationError

type IntegrationError struct {
	Service      string                 `json:"service"`
	Endpoint     string                 `json:"endpoint,omitempty"`
	Method       string                 `json:"method,omitempty"`
	StatusCode   int                    `json:"status_code,omitempty"`
	Response     string                 `json:"response,omitempty"`
	Timeout      bool                   `json:"timeout"`
	NetworkError bool                   `json:"network_error"`
	Metadata     map[string]interface{} `json:"metadata,omitempty"`
}

IntegrationError representa un error de integración con servicios externos

type SecurityError

type SecurityError struct {
	Threat      string     `json:"threat"`
	Action      string     `json:"action"`
	Severity    string     `json:"severity"`
	RemoteIP    string     `json:"remote_ip,omitempty"`
	UserAgent   string     `json:"user_agent,omitempty"`
	BlockedTime *time.Time `json:"blocked_until,omitempty"`
}

SecurityError representa un error de seguridad

type StackFrame

type StackFrame struct {
	Function string `json:"function"`
	File     string `json:"file"`
	Line     int    `json:"line"`
	Package  string `json:"package"`
}

StackFrame representa un frame en el stack trace

type StackTrace

type StackTrace struct {
	Frames []StackFrame `json:"frames"`
	Raw    string       `json:"raw"`
}

StackTrace representa un stack trace completo

type ValidationError

type ValidationError struct {
	Field   string      `json:"field"`
	Value   interface{} `json:"value"`
	Tag     string      `json:"tag"`
	Message string      `json:"message"`
}

ValidationError representa un error de validación específico

type ValidationErrorResponse

type ValidationErrorResponse struct {
	Error  HTTPError         `json:"error"`
	Errors []ValidationError `json:"validation_errors"`
}

ValidationErrorResponse representa una respuesta con múltiples errores de validación

Jump to

Keyboard shortcuts

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