s-expression can be used to describe the condition that end up under the
WHEREstatement of the generated sql string. Such filters can be one-off (which is specified by the EQL consumer) or permanent (specified in the registry).
configuration to describe all data available to API consumer (namely roots, idents, true columns, pseudo columns, joins and aggregators) as well as filters constraints to access each of them. Designing the registry can be seen as creating a bunch of SQL
viewsso that the data endpoints can be freely consumed later without thinking too much about implementation details.
clojure expressions that follow walkable specifications to generate equivalant sql strings. These strings are automatically parameterized, so they are safe from SQL injection attacks.
- permanent filter
a filter designed by API author to filter out undesired entities, usually for security reason. They are declared in the registry therefore they are not visible to EQL consumers.
- one-off filter
EQL consumers can specify a filter to narrow down further the entities under a root or join. Such filters are placed in the said root or join’s query parameters.
top-level data endpoint. Normal roots offer some column and join under them, while root aggregators return a single value.
relationships between two tables. Conceptually similar to SQL joins, but returns a tree structure instead of a flat table.
single value produced with
countetc. Can be either a root or a join.
either a true column or a pseudo column
- true column
a real column in the database. Denoted with a qualified keyword, for example
:foo/bar-bazmeans the column
bar_bazin the table
foo. The rule of mapping from such keyword to their real column can be tweaked by customizing the emitter.
- pseudo column
a property of an entity whose value is derived from true columns and/or variables using walkable s-expressions.
offset, limit and order-by. Defaults can be set in the registry.
a set of rules that dictate how to produce sql strings that conforms a specific SQL flavor!
a placeholder in an s-expression denoted with a Clojure symbol and how to compute its value each time it is used.
the "enviroment" hash-map that is passed as argument to query executer. Usually contains database instances and current request’s authentication information.
query in the EQL language to denote data requirements.
a function that execute EQL queries and returns data. Can be either sync or async.
Abstract Syntax Tree equivalant of an EQL query
- query parameters
a map describing extra information. Can be used for alias, filters and pagination.
a keyword describing available data. In Walkable’s case, it can be either a root, join, true column, pseudo column or aggregators.
a relationship between two entities. Do not confuse with SQL’s
a convention in Fulcro/Pathom to access single entity by a key/value pair (usually a primary key)
an entity in walkable’s case is a record in a database table.