# `BoxTurtle.Schema.Query.Options.API`
[🔗](https://github.com/twajjo/box_turtle/blob/v0.1.0/lib/schema/query/options/api.ex#L1)

Accessors for the settings given to `use BoxTurtle.Schema.Query`.

Every accessor takes an optional keyword list; a value for the same key in it overrides the `use`-time setting.
This is how call-time options such as `repo:` or `default_sort:` take effect.

# `default_distinct`

```elixir
@callback default_distinct() :: [atom()]
```

# `default_distinct`

```elixir
@callback default_distinct(keyword()) :: [atom()]
```

# `default_preloads`

```elixir
@callback default_preloads() :: list()
```

# `default_preloads`

```elixir
@callback default_preloads(keyword()) :: list()
```

# `default_sort`

```elixir
@callback default_sort() :: BoxTurtle.Schema.Sort.API.sort_spec()
```

# `default_sort`

```elixir
@callback default_sort(keyword()) :: BoxTurtle.Schema.Sort.API.sort_spec()
```

# `filter_module`

```elixir
@callback filter_module() :: module()
```

# `filter_module`

```elixir
@callback filter_module(keyword()) :: module()
```

# `inject_query_options`

```elixir
@callback inject_query_options(keyword()) :: keyword()
```

Adds every `use`-time setting to the given options, keeping any value already present in them.

# `page_size`

```elixir
@callback page_size() :: pos_integer()
```

# `page_size`

```elixir
@callback page_size(keyword()) :: pos_integer()
```

# `primary_key`

```elixir
@callback primary_key() :: atom()
```

# `primary_key`

```elixir
@callback primary_key(keyword()) :: atom()
```

# `repo`

```elixir
@callback repo() :: module()
```

# `repo`

```elixir
@callback repo(keyword()) :: module()
```

# `schema`

```elixir
@callback schema() :: module()
```

# `schema`

```elixir
@callback schema(keyword()) :: module()
```

# `sorting_module`

```elixir
@callback sorting_module() :: module()
```

# `sorting_module`

```elixir
@callback sorting_module(keyword()) :: module()
```

---

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