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 ¶
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