mix selecto.gen.parameterized_join (selecto_mix v0.4.2)

Generate parameterized join configuration templates for Selecto domains.

This task helps create parameterized joins that accept runtime parameters, enabling dynamic query behavior based on user input or application state.

Examples

# Generate a basic parameterized join template
mix selecto.gen.parameterized_join products category:string active:boolean

# Generate with field specifications
mix selecto.gen.parameterized_join products category:string,required active:boolean,default=true --fields name:string,price:decimal

# Generate with join condition template
mix selecto.gen.parameterized_join discounts category:string --condition "discounts.category = :category AND discounts.active = :active"

Syntax

Parameter format: name:type[,options]

Types: string, integer, float, boolean, date, datetime Options: required, default=value, description="text"

Options

  • --fields - Comma-separated list of fields available from this join (field:type format)
  • --condition - SQL join condition template with parameter placeholders
  • --source-table - Override the source table name (defaults to join name)
  • --output - Output file path (defaults to stdout)

Generated Configuration

Outputs a parameterized join configuration that you can copy into your domain:

products: %{
  name: "Products",
  type: :left,
  source_table: "products",
  parameters: [
    %{name: :category, type: :string, required: true},
    %{name: :active, type: :boolean, required: false, default: true}
  ],
  fields: %{
    name: %{type: :string},
    price: %{type: :decimal}
  },
  join_condition: "products.category = :category AND products.active = :active"
}

Usage in Queries

Use dot notation to reference parameterized fields:

# Basic parameterized field reference
"products:electronics.name"

# Multiple parameters
"products:electronics:true.price"

# String parameters with spaces (quoted)
"products:'consumer electronics':true.price"