# `Selecto.Schema.ParameterizedJoin`

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.

# `parameter_definition`

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

# `parameterized_join_config`

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

# `validated_parameter`

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

# `build_parameter_context`

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

Build parameter context map for SQL template resolution.

# `build_parameter_signature`

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

Build parameter signature string for caching and identification.

# `enhance_join_with_parameters`

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

Update join configuration to include parameterized context.

# `process_parameterized_join`

```elixir
@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`

```elixir
@spec resolve_parameterized_condition(map(), [validated_parameter()]) ::
  iodata() | nil
```

Resolve parameterized join condition by replacing parameter placeholders.

# `validate_parameters`

```elixir
@spec validate_parameters([parameter_definition()], [
  Selecto.FieldResolver.ParameterizedParser.parameter()
]) :: [validated_parameter()]
```

Validate provided parameters against parameter definitions from join configuration.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
