errors

package
v0.11.0 Latest Latest
Warning

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

Go to latest
Published: Sep 9, 2026 License: MIT Imports: 1 Imported by: 0

Documentation

Overview

Package errors provides structured error handling for pgsquash operations.

This package exposes the unified error system that categorizes, enriches, and formats errors with contextual information for better debugging and reporting.

Basic Usage

Create structured errors:

err := errors.NewParseError(
    errors.ErrorCodeSyntaxError,
    "Invalid CREATE TABLE syntax",
).WithFile("001_init.sql").WithLine(42)

if err != nil {
    fmt.Println(err.Error())
    // [ERROR:PARSING] code:SYNTAX_ERROR file:001_init.sql line:42 Invalid CREATE TABLE syntax
}

Error Categories

Errors are organized by category:

errors.CategorySyntax       - SQL parsing errors
errors.CategorySemantic     - Logical errors
errors.CategoryDependency   - Dependency issues
errors.CategoryValidation   - Validation failures
errors.CategoryConsolidation - Consolidation errors

Severity Levels

Four severity levels:

errors.SeverityInfo     - Informational
errors.SeverityWarning  - Non-critical issues
errors.SeverityError    - Errors requiring attention
errors.SeverityCritical - Fatal errors

Error Collection

Collect multiple errors:

collector := errors.NewErrorCollector(ctx)

for _, migration := range migrations {
    if err := validate(migration); err != nil {
        collector.AddError(err)
    }
}

if collector.HasErrors() {
    summary := collector.Summary()
    fmt.Printf("Found %d errors\n", summary.TotalErrors)
}

Fluent Error Building

Build rich errors fluently:

err := errors.NewError(
    errors.ErrorCodeConsolidationFailed,
    "Failed to consolidate table",
    errors.SeverityError,
    errors.CategoryConsolidation,
).WithObject("users", "table").
  WithFile("003_users.sql").
  WithLine(15).
  WithSuggestion("Check for circular dependencies").
  WithInnerError(originalErr)

Index

Constants

This section is empty.

Variables

View Source
var (
	// NewError creates a new StructuredError
	NewError = internal_errors.NewError

	// NewParseError creates a parse error
	NewParseError = internal_errors.NewParseError

	// NewValidationError creates a validation error
	NewValidationError = internal_errors.NewValidationError

	// NewTransformationError creates a transformation error
	NewTransformationError = internal_errors.NewTransformationError

	// NewTypeError creates a type error
	NewTypeError = internal_errors.NewTypeError

	// NewNormalizationError creates a normalization error
	NewNormalizationError = internal_errors.NewNormalizationError

	// NewWarning creates a warning
	NewWarning = internal_errors.NewWarning

	// NewCriticalError creates a critical error
	NewCriticalError = internal_errors.NewCriticalError

	// NewErrorCollector creates a new error collector
	NewErrorCollector = internal_errors.NewErrorCollector

	// NewErrorFormatter creates a new error formatter
	NewErrorFormatter = internal_errors.NewErrorFormatter
)

Constructors

Functions

This section is empty.

Types

type Category

type Category = internal_errors.Category

Category represents the category of errors/warnings

const (
	// CategorySyntax for SQL parsing and syntax errors
	CategorySyntax Category = internal_errors.CategorySyntax

	// CategorySemantic for logical and semantic errors
	CategorySemantic Category = internal_errors.CategorySemantic

	// CategoryDependency for dependency resolution errors
	CategoryDependency Category = internal_errors.CategoryDependency

	// CategoryNaming for naming convention errors
	CategoryNaming Category = internal_errors.CategoryNaming

	// CategoryPermission for permission and security errors
	CategoryPermission Category = internal_errors.CategoryPermission

	// CategoryConstraint for constraint validation errors
	CategoryConstraint Category = internal_errors.CategoryConstraint

	// CategoryDataType for data type errors
	CategoryDataType Category = internal_errors.CategoryDataType

	// CategoryFunction for function-related errors
	CategoryFunction Category = internal_errors.CategoryFunction

	// CategoryIndex for index-related errors
	CategoryIndex Category = internal_errors.CategoryIndex

	// CategoryPolicy for RLS policy errors
	CategoryPolicy Category = internal_errors.CategoryPolicy

	// CategoryExtension for extension-related errors
	CategoryExtension Category = internal_errors.CategoryExtension

	// CategoryPerformance for performance issues
	CategoryPerformance Category = internal_errors.CategoryPerformance

	// CategoryValidation for validation failures
	CategoryValidation Category = internal_errors.CategoryValidation

	// CategoryTransformation for transformation errors
	CategoryTransformation Category = internal_errors.CategoryTransformation

	// CategoryType for type system errors
	CategoryType Category = internal_errors.CategoryType

	// CategoryNormalization for normalization errors
	CategoryNormalization Category = internal_errors.CategoryNormalization

	// CategoryParsing for parsing errors
	CategoryParsing Category = internal_errors.CategoryParsing

	// CategoryConsolidation for consolidation errors
	CategoryConsolidation Category = internal_errors.CategoryConsolidation

	// CategoryCycle for circular dependency errors
	CategoryCycle Category = internal_errors.CategoryCycle

	// CategoryOptimization for optimization issues
	CategoryOptimization Category = internal_errors.CategoryOptimization

	// CategoryRisk for risk assessment warnings
	CategoryRisk Category = internal_errors.CategoryRisk

	// CategoryBackup for backup operation errors
	CategoryBackup Category = internal_errors.CategoryBackup

	// CategoryRollback for rollback operation errors
	CategoryRollback Category = internal_errors.CategoryRollback

	// CategoryInfo for informational messages
	CategoryInfo Category = internal_errors.CategoryInfo

	// CategoryGeneral for general errors
	CategoryGeneral Category = internal_errors.CategoryGeneral
)

Error categories

type ErrorCode

type ErrorCode = internal_errors.ErrorCode

ErrorCode represents specific error codes

const (
	// Parse errors
	ErrorCodeSyntaxError     ErrorCode = internal_errors.ErrorCodeSyntaxError
	ErrorCodeSemanticError   ErrorCode = internal_errors.ErrorCodeSemanticError
	ErrorCodeDependencyError ErrorCode = internal_errors.ErrorCodeDependencyError

	// Validation errors
	ErrorCodeValidationFailed ErrorCode = internal_errors.ErrorCodeValidationFailed
	ErrorCodeSchemaNotFound   ErrorCode = internal_errors.ErrorCodeSchemaNotFound
	ErrorCodeInvalidObject    ErrorCode = internal_errors.ErrorCodeInvalidObject

	// Transformation errors
	ErrorCodeRollbackGenerationFailed ErrorCode = internal_errors.ErrorCodeRollbackGenerationFailed
	ErrorCodeBackupGenerationFailed   ErrorCode = internal_errors.ErrorCodeBackupGenerationFailed
	ErrorCodeTransformationFailed     ErrorCode = internal_errors.ErrorCodeTransformationFailed

	// Type errors
	ErrorCodeInvalidType       ErrorCode = internal_errors.ErrorCodeInvalidType
	ErrorCodeTypeNotFound      ErrorCode = internal_errors.ErrorCodeTypeNotFound
	ErrorCodeIncompatibleTypes ErrorCode = internal_errors.ErrorCodeIncompatibleTypes

	// Consolidation errors
	ErrorCodeConsolidationFailed ErrorCode = internal_errors.ErrorCodeConsolidationFailed
	ErrorCodeSQLGenerationFailed ErrorCode = internal_errors.ErrorCodeSQLGenerationFailed

	// Normalization errors
	ErrorCodeNormalizationFailed ErrorCode = internal_errors.ErrorCodeNormalizationFailed
	ErrorCodeInvalidIdentifier   ErrorCode = internal_errors.ErrorCodeInvalidIdentifier
)

Error codes

type ErrorCollector

type ErrorCollector = internal_errors.ErrorCollector

ErrorCollector collects and manages errors

type ErrorContext

type ErrorContext = internal_errors.ErrorContext

ErrorContext provides context information for errors

type ErrorFormatter

type ErrorFormatter = internal_errors.ErrorFormatter

ErrorFormatter formats errors for different outputs

type ErrorSummary

type ErrorSummary = internal_errors.ErrorSummary

ErrorSummary provides a summary of collected errors

type Severity

type Severity = internal_errors.Severity

Severity represents the severity level of errors

const (
	// SeverityInfo is informational, processing continues
	SeverityInfo Severity = internal_errors.SeverityInfo

	// SeverityWarning is non-critical, processing continues
	SeverityWarning Severity = internal_errors.SeverityWarning

	// SeverityError requires attention, may stop processing
	SeverityError Severity = internal_errors.SeverityError

	// SeverityCritical is fatal, stops processing
	SeverityCritical Severity = internal_errors.SeverityCritical
)

Severity levels

type StructuredError

type StructuredError = internal_errors.StructuredError

StructuredError is a unified error type for all pgsquash errors

Jump to

Keyboard shortcuts

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