This library is a full implementation of Facebook's GraphQL specification.
Lacinia should be viewed as roughly analogous to the official reference JavaScript implementation. In other words, it is a backend-agnostic GraphQL query execution engine. Lacinia is not an Object Relational Mapper ... it's simply the implementation of a contract sitting between the GraphQL client and your data.
Lacinia features:
- An EDN-based schema language, or use GraphQL's Interface Definition Language.
- High performance parser for GraphQL queries, built on Antlr4.
- Efficient and asynchronous query execution.
- Full support for GraphQL types, interfaces, unions, enums, input objects, and custom scalars.
- Union types in SDL now support an optional leading vertical bar (|) before the first member, following the GraphQL specification. For example:
union Searchable = | Business | Employee - Full support for GraphQL subscriptions.
- Full support of inline and named query fragments.
- Full support for GraphQL Schema Introspection.
A lot of us feel a little lost as we start to use Clojure and try to make sense of how we should model data. If we came from a schema or type-based system many of us are tempted to apply those skills directly. We have a notion (reinforced by talks we watch) that these namespaced keywords are important, but we often struggle to apply those concepts pragmatically.
In this talk, I’ll discuss how the ideas of context-free federated names (a.k.a. namespace-qualified keywords) have become more concrete and pragmatic to me during my use of them at NuBank. I’ll talk about my realizations on how they can be used in practical ways that lead to a high level of clarity in our data models and communication systems, and open up better flexibility and reach.
Finally, I’ll relate these concepts to recent advances in the communication of this kind of data at the systems level as a graph, and show how industry standards like GraphQL continue to suffer from problems of composition and generality, while Clojure’s approach leads to an open information system with maximal utility: the Maximal Graph.
