Skip to content

Named queries

Named .eel files are the primary way apps consume Eelden Lang (sqlc-like). Inline templates are an escape hatch.

eel
use schema "../demo_schema.eel"

query ListUsers() {
  users |> select { id, name, email, active, balance, status }
}

query GetPaid(min_balance: Money<usd>) {
  users
  |> filter status == .paid && balance >= ${min_balance}
  |> select { name, balance }
}

Declared params bind ${name} holes in the body. Types are checked against the schema registry (including use schema paths relative to the queries file).

Config

examples/eelden.config.json:

json
{
  "schemas": ["demo_schema.eel"],
  "queries": ["queries/**/*.eel"],
  "outDir": "generated"
}

Codegen

bash
# from clients/typescript after npm run build
node bin/eelden-codegen.mjs --config ../../examples/eelden.config.json

Or, once on your PATH:

bash
eelden-codegen --config eelden.config.json

Emits typed TypeScript functions that return EeldenQuery<TRows> values for an EeldenExecutor to run.

CLI typecheck

bash
cargo run -p eelden-cli -- typecheck-queries examples/demo_schema.eel examples/queries/users.eel

Example layout

PathRole
examples/demo_schema.eelSchema
examples/queries/users.eelNamed queries
examples/eelden.config.jsonCodegen config

Pre-alpha. Local-first. Stdlib-only Rust engine.