Skip to main content

SQL Templates

SQL templates define the queries that power your API endpoints. flAPI uses Mustache templating syntax to create dynamic, parameterized queries.

Quick Example

-- sqls/customers.sql
SELECT
customer_id,
name,
email,
segment
FROM customers
WHERE 1=1
{{#params.segment}}
AND segment = '{{{params.segment}}}'
{{/params.segment}}
{{#params.active}}
AND active = {{{params.active}}}
{{/params.active}}
ORDER BY created_at DESC
LIMIT 100

Mustache Syntax

flAPI uses Mustache for template logic:

  • {{{variable}}}: Insert variable (triple braces for unescaped)
  • {{#variable}}...{{/variable}}: Conditional block (if variable exists)
  • {{^variable}}...{{/variable}}: Inverted block (if variable doesn't exist)

Available Context

In your SQL templates, you have access to:

  • params.*: Request parameters (query, path, headers)
  • conn.*: Connection properties from configuration
  • context.user.*: Authenticated user information
  • cache.*: Cache properties
  • env.*: Whitelisted environment variables

Next Steps

For comprehensive SQL templating documentation, see:

🍪 Cookie Settings