Selecto.Error (Selecto v0.4.5)

Copy Markdown

Standardized error structure for all Selecto operations.

Provides consistent error handling across the Selecto ecosystem with structured error information including context, query details, and actionable error types.

Error Types

  • :connection_error - Database connection failures
  • :query_error - SQL query execution failures
  • :validation_error - Input validation failures
  • :configuration_error - Invalid domain or Selecto configuration
  • :no_results - Query returned no results when one expected
  • :multiple_results - Query returned multiple results when one expected
  • :timeout_error - Query execution timeout

Examples

# Connection error
{:error, %Selecto.Error{
  type: :connection_error,
  message: "Failed to connect to database",
  details: %{host: "localhost", port: 5432}
}}

# Query error with context
{:error, %Selecto.Error{
  type: :query_error,
  message: "Column 'invalid_col' does not exist",
  query: "SELECT invalid_col FROM users",
  params: [],
  details: %{column: "invalid_col", table: "users"}
}}

Summary

Functions

Creates a configuration error.

Creates a connection error.

Creates a field resolution error with context.

Converts various error types to standardized Selecto.Error.

Creates a no results error for execute_one/2.

Creates a query execution error with SQL context.

Creates a query generation error.

Creates a timeout error.

Creates a user-friendly error message for display.

Converts a Selecto.Error to an exception for raising.

Creates a transformation error for output format processing.

Creates a validation error.

Types

error_type()

@type error_type() ::
  :connection_error
  | :query_error
  | :validation_error
  | :configuration_error
  | :no_results
  | :multiple_results
  | :timeout_error
  | :field_resolution_error
  | :transformation_error

t()

@type t() :: %Selecto.Error{
  details: map() | nil,
  message: String.t(),
  params: [term()] | nil,
  query: String.t() | nil,
  type: error_type()
}

Functions

configuration_error(message, details \\ %{})

@spec configuration_error(String.t(), map()) :: t()

Creates a configuration error.

connection_error(message, details \\ %{})

@spec connection_error(String.t(), map()) :: t()

Creates a connection error.

field_resolution_error(message, field_ref, context \\ %{})

@spec field_resolution_error(String.t(), term(), map()) :: t()

Creates a field resolution error with context.

from_reason(exception)

@spec from_reason(term()) :: t()

Converts various error types to standardized Selecto.Error.

multiple_results_error(message \\ "Query returned multiple results when one expected")

@spec multiple_results_error(String.t()) :: t()

Creates a multiple results error for execute_one/2.

no_results_error(message \\ "Query returned no results")

@spec no_results_error(String.t()) :: t()

Creates a no results error for execute_one/2.

query_error(message, query \\ nil, params \\ [], details \\ %{})

@spec query_error(String.t(), String.t() | nil, [term()], map()) :: t()

Creates a query execution error with SQL context.

query_generation_error(message, details \\ %{})

@spec query_generation_error(String.t(), map()) :: t()

Creates a query generation error.

timeout_error(message, details \\ %{})

@spec timeout_error(String.t(), map()) :: t()

Creates a timeout error.

to_display_message(error)

@spec to_display_message(t()) :: String.t()

Creates a user-friendly error message for display.

to_exception(error)

@spec to_exception(t()) :: Exception.t()

Converts a Selecto.Error to an exception for raising.

transformation_error(message, details \\ %{})

@spec transformation_error(String.t(), map()) :: t()

Creates a transformation error for output format processing.

validation_error(message, details \\ %{})

@spec validation_error(String.t(), map()) :: t()

Creates a validation error.