Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
ca1ac77
docs: add website, scenarios, agent skill; remove stale docs
AbeOmor May 29, 2026
f1f4b81
docs(website): OSS Durable Functions is already open source (not comi…
AbeOmor May 29, 2026
81cd668
docs(website): redesign with engineered-durability aesthetic (Bricola…
AbeOmor May 29, 2026
7b0b5c9
docs(website): hero diagram now maps to the Parallel Aggregation scen…
AbeOmor May 29, 2026
78f2f28
docs(website): animated live-execution hero; differentiate design fro…
AbeOmor May 29, 2026
a7516d2
docs(website): bigger Postgres-forward hero headline + eyebrow
AbeOmor May 29, 2026
8902f2b
docs(website): tweak hero subtitle wording
AbeOmor May 29, 2026
409b068
docs(website): match With pg_durable snippet to hero parallel-aggrega…
AbeOmor May 29, 2026
243f44d
docs(website): frame Without boilerplate around the same parallel-agg…
AbeOmor May 29, 2026
c00f36d
docs(website): add Azure HorizonDB cloud upsell section
AbeOmor May 29, 2026
108dc60
docs(website): align comparison panels to equal height
AbeOmor May 29, 2026
65fc2ec
ci: deploy docs/website to GitHub Pages
AbeOmor May 29, 2026
04adb73
docs: remove AI scenarios folder and references
AbeOmor May 29, 2026
c347420
docs(website): add AI pipeline callout to HorizonDB, drop preview note
AbeOmor May 29, 2026
723c4ef
docs(website): reword AI pipeline heading, add AI pipelines button
AbeOmor May 29, 2026
9ace88f
docs: rename Sarat_scenarios to operational_scenarios, drop transcrip…
AbeOmor May 29, 2026
579142b
docs: move operational_scenarios into examples, add Azure integration…
AbeOmor May 29, 2026
11adec7
docs: rename operational_scenarios to operational-scenarios, update r…
AbeOmor May 29, 2026
e956d7c
docs(website): add scenarios guide callout and expand What you can bu…
AbeOmor May 29, 2026
aba63c6
docs(website): add headers and accent styling to AI Skill and open-so…
AbeOmor May 29, 2026
26ff138
docs: fix SQL schema/column/arity bugs and operational-scenario hazar…
AbeOmor May 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Generate correct, idiomatic pg_durable durable function SQL using the `df.*` sch

1. **All DSL expressions are TEXT.** Operators and functions return JSON-encoded TEXT strings representing a function graph. Only `df.start()` actually executes anything.
2. **SQL strings are auto-wrapped.** Plain SQL strings like `'SELECT 1'` are automatically converted to SQL nodes — you do NOT need `df.sql()`.
3. **Single-quote escaping.** Inside SQL string literals, single quotes must be doubled: `''value''` not `'value'`.
3. **Single-quote escaping.** Each DSL node is itself a single-quoted SQL string, so any single quotes *inside* it must be doubled. To filter `status = 'pending'`, write the whole node as `'SELECT * FROM orders WHERE status = ''pending'''` (note the doubled quotes around `pending` and the closing `'''`).
4. **Operators are SQL-level custom operators.** They work on `TEXT` operands. Parentheses control grouping.
5. **`df.setvar()` must be called BEFORE `df.start()`.** Variables are captured at start time and are immutable during execution.
6. **Two variable syntaxes:** `{varname}` for durable function variables (from `df.setvar`), `$name` for result captures (from `|=>`). Do NOT mix them up.
Expand Down Expand Up @@ -89,6 +89,10 @@ df.race(a TEXT, b TEXT) → TEXT
-- Conditional branch (function variant of ?> !>)
df.if(condition TEXT, then_branch TEXT, else_branch TEXT) → TEXT

-- Conditional branch on whether a NAMED result has rows (no SQL re-run).
-- result_name is a capture from |=> earlier in the graph.
df.if_rows(result_name TEXT, then_branch TEXT, else_branch TEXT) → TEXT

-- Loop — infinite or while-condition
df.loop(body TEXT) → TEXT -- Infinite loop
df.loop(body TEXT, condition TEXT) → TEXT -- While-loop: repeats while condition is truthy
Expand Down Expand Up @@ -121,7 +125,7 @@ df.signal(
Use a JSON object when workflow SQL expects structured fields; use plain text for simple opaque values.

-- Query status
df.status(instance_id TEXT) → TEXT -- 'Running', 'Completed', 'Failed', 'Cancelled'
df.status(instance_id TEXT) → TEXT -- 'pending', 'running', 'completed', 'failed', 'cancelled' (lowercase)

-- Get result
df.result(instance_id TEXT) → TEXT -- JSON result from final node
Expand Down Expand Up @@ -214,7 +218,7 @@ The first column of the first row is evaluated:
|------|--------|-------|
| Boolean | `true`, `t` | `false`, `f` |
| Number | Any non-zero | `0`, `0.0` |
| String | `'true'`, `'yes'`, `'1'`, non-empty | `'false'`, `'no'`, `'0'`, `''` |
| String | `'true'`, `'t'`, `'yes'`, non-zero numeric strings, and any other non-empty string (e.g. `'hello'`) | `'false'`, `'f'`, `'no'`, `'0'`, `''` (empty/whitespace) |
| Array | Non-empty `[1,2]` | Empty `[]` |
| Object | Non-empty `{"a":1}` | Empty `{}` |
| NULL | — | Always falsy |
Expand Down
42 changes: 42 additions & 0 deletions .github/workflows/pages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: Deploy website to GitHub Pages

on:
push:
branches: [main]
paths:
- 'docs/website/**'
- '.github/workflows/pages.yml'
workflow_dispatch:

# Allow the GITHUB_TOKEN to deploy to Pages.
permissions:
contents: read
pages: write
id-token: write

# Allow one concurrent deployment; skip queued runs in between.
concurrency:
group: pages
cancel-in-progress: true

jobs:
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Configure Pages
uses: actions/configure-pages@v5

- name: Upload website artifact
uses: actions/upload-pages-artifact@v3
with:
path: docs/website

- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
Loading
Loading