Selecto.Schema.ParameterizedJoin (Selecto v0.4.5)

Copy Markdown

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.

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.

Types

parameter_definition()

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

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()
}

validated_parameter()

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

Functions

build_parameter_context(validated_params)

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

Build parameter context map for SQL template resolution.

build_parameter_signature(parameters)

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

Build parameter signature string for caching and identification.

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.

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.

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.

validate_parameters(param_definitions, provided_params)

Validate provided parameters against parameter definitions from join configuration.