# `Exograph.DSL.Query`
[🔗](https://github.com/elixir-vibe/exograph/blob/v0.2.0/lib/exograph/dsl/query.ex#L1)

Query IR produced by `Exograph.DSL`.

# `join`

```elixir
@type join() :: {:assoc, atom(), atom(), atom()}
```

# `predicate`

```elixir
@type predicate() ::
  {:matches, atom(), String.t()}
  | {:contains, atom(), String.t()}
  | {:prefix_search, atom(), atom(), String.t()}
  | {:eq, atom(), atom(), term()}
  | {:cmp, atom(), atom(), :&gt; | :&lt; | :&gt;= | :&lt;=, term()}
  | {:in, atom(), atom(), [term()]}
```

# `select`

```elixir
@type select() :: nil | atom() | {:tuple, [atom()]}
```

# `source`

```elixir
@type source() :: :fragment | :definition | :reference | :call_edge
```

# `t`

```elixir
@type t() :: %Exograph.DSL.Query{
  binding: atom(),
  joins: [join()],
  predicates: [predicate()],
  select: select(),
  source: source()
}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
