Selection normalization for the Synthigy client.
Converts user-friendly selection shorthand into the wire format expected by the /data endpoint.
Selection normalization for the Synthigy client. Converts user-friendly selection shorthand into the wire format expected by the /data endpoint.
(normalize selection)Normalize a user-friendly selection into /data wire format.
Normalizes keys to snake_case (kebab-case and camelCase accepted).
Supports shorthand syntax:
Existing internal format [{:selections {...}}] passes through unchanged.
Join semantics are the SERVER's: absent _join is LEFT (a selection is
a projection and never drops parents; relation args filter the related
rows). The client injects nothing — pass {:_join :inner} explicitly
when the relation's existence should scope its parent.
Normalize a user-friendly selection into /data wire format.
Normalizes keys to snake_case (kebab-case and camelCase accepted).
Supports shorthand syntax:
- nil / true → nil (include field)
- [:name :email] → {:name nil :email nil}
- {:roles {:name nil}} → {:roles [{:selections {:name nil}}]}
- {:roles [:name]} → {:roles [{:selections {:name nil}}]}
- [:name {:roles [:name]} :active] → mixed vectors
- {:roles {:selections {:name nil} :args {...}}} → wraps in vector
Existing internal format [{:selections {...}}] passes through unchanged.
Join semantics are the SERVER's: absent `_join` is LEFT (a selection is
a projection and never drops parents; relation args filter the related
rows). The client injects nothing — pass `{:_join :inner}` explicitly
when the relation's existence should scope its parent.cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |