Query IR produced by Exograph.DSL.
Exograph.DSL
@type join() :: {:assoc, atom(), atom(), atom()}
@type predicate() :: {:matches, atom(), String.t()} | {:contains, atom(), String.t()} | {:prefix_search, atom(), atom(), String.t()} | {:eq, atom(), atom(), term()} | {:cmp, atom(), atom(), :> | :< | :>= | :<=, term()} | {:in, atom(), atom(), [term()]}
@type select() :: nil | atom() | {:tuple, [atom()]}
@type source() :: :fragment | :definition | :reference | :call_edge
@type t() :: %Exograph.DSL.Query{ binding: atom(), joins: [join()], predicates: [predicate()], select: select(), source: source() }