Sandestin Effect Explorer
Discover and understand available effects, actions, and placeholders.
Important: All discoverability functions operate on the dispatch function, not registries. You must first create a dispatch via (s/create-dispatch [registries...]) before using these functions.
About Sandestin
Sandestin is a Clojure effect dispatch library with schema-driven discoverability. Effects are dispatched as vectors like [:myapp/save-user {:name "Alice"}].
GitHub: https://github.com/brianium/sandestin
Check if Installed
Look for the dependency in deps.edn:
clojure1io.github.brianium/sandestin {:git/tag "v0.3.0" :git/sha "2be6acc"}
Install if Missing
Add to deps.edn under :deps:
clojure1{:deps 2 {io.github.brianium/sandestin {:git/tag "v0.3.0" :git/sha "2be6acc"}}}
Workflow
1. Find the Dispatch
Search for create-dispatch to locate the project's dispatch namespace.
2. Explore via REPL
clojure1(require '[ascolais.sandestin :as s]) 2(require '[<dispatch-ns> :refer [dispatch]]) 3 4;; List everything 5(s/describe dispatch) 6 7;; Filter by type 8(s/describe dispatch :effects) 9(s/describe dispatch :actions) 10(s/describe dispatch :placeholders) 11 12;; Search by keyword 13(s/grep dispatch "user") 14(s/grep dispatch #"save|create") 15 16;; Get details on specific item 17(s/describe dispatch :some.ns/effect-name) 18 19;; Generate sample invocation 20(s/sample dispatch :some.ns/effect-name) 21 22;; See system requirements 23(s/system-schema dispatch)
Output Format
Summarize findings:
### Effects
**:myapp.db/query** - Execute a SQL query
Requires: [:datasource]
Example: [:myapp.db/query "SELECT * FROM users" 42]
### Actions
**:myapp.user/create** - Create user and send welcome email
Expands to: db insert + email send
Key Functions
| Function | Purpose |
|---|---|
(s/describe dispatch) | List all items |
(s/describe dispatch :key) | Details for specific item |
(s/grep dispatch "pattern") | Search by string/regex |
(s/sample dispatch :key) | Generate sample data |
(s/system-schema dispatch) | System requirements |