Selecto.Schema.ParameterizedJoin (Selecto v0.4.3)

Processing and configuration for parameterized joins.

This module handles the creation and management of parameterized joins, including parameter validation, SQL generation context, and join condition resolution.

Link to this section Summary

Functions

Build parameter context map for SQL template resolution.

Build parameter signature string for caching and identification.

Update join configuration to include parameterized context.

Process a parameterized join configuration by validating parameters and building context.

Resolve parameterized join condition by replacing parameter placeholders.

Validate provided parameters against parameter definitions from join configuration.

Link to this section Types

Link to this type

parameter_definition()

@type parameter_definition() :: %{
  name: atom(),
  type: atom(),
  required: boolean(),
  default: any(),
  description: String.t() | nil
}
Link to this type

parameterized_join_config()

@type parameterized_join_config() :: %{
  base_config: map(),
  parameters: [validated_parameter()],
  parameter_context: map(),
  join_condition: String.t() | nil,
  parameter_signature: String.t()
}
Link to this type

validated_parameter()

@type validated_parameter() :: %{name: atom(), value: any(), type: atom()}

Link to this section Functions

Link to this function

build_parameter_context(validated_params)

@spec build_parameter_context([validated_parameter()]) :: map()

Build parameter context map for SQL template resolution.

Link to this function

build_parameter_signature(parameters)

@spec build_parameter_signature([
  Selecto.FieldResolver.ParameterizedParser.parameter()
]) :: String.t()

Build parameter signature string for caching and identification.

Link to this function

enhance_join_with_parameters(base_join, parameterized_config)

@spec enhance_join_with_parameters(map(), parameterized_join_config()) :: map()

Update join configuration to include parameterized context.

Link to this function

process_parameterized_join(join_id, join_config, parameters, parent, from_source, queryable)

@spec process_parameterized_join(
  join_id :: atom(),
  join_config :: map(),
  parameters :: [Selecto.FieldResolver.ParameterizedParser.parameter()],
  parent :: atom(),
  from_source :: module(),
  queryable :: map()
) :: parameterized_join_config()

Process a parameterized join configuration by validating parameters and building context.

Link to this function

resolve_parameterized_condition(join_config, validated_params)

@spec resolve_parameterized_condition(map(), [validated_parameter()]) ::
  String.t() | nil

Resolve parameterized join condition by replacing parameter placeholders.

Link to this function

validate_parameters(param_definitions, provided_params)

Validate provided parameters against parameter definitions from join configuration.