# BoxTurtle v0.1.0 - API Reference

## Modules

- Schema
  - [BoxTurtle.Schema](BoxTurtle.Schema.md): A convention-driven data-access layer for Ecto schemas.
  - [BoxTurtle.Schema.Change](BoxTurtle.Schema.Change.md): Generates the write functions of `BoxTurtle.Schema.Change.API` for an Ecto schema.
  - [BoxTurtle.Schema.Change.API](BoxTurtle.Schema.Change.API.md): Write operations generated by `use BoxTurtle.Schema.Change`: create, update and delete.
  - [BoxTurtle.Schema.Ecto.Ksuid](BoxTurtle.Schema.Ecto.Ksuid.md): An `Ecto.Type` for [KSUID](https://github.com/segmentio/ksuid) keys, stored as 27-character base62 strings.
KSUIDs sort by creation time, which makes them convenient primary keys.
  - [BoxTurtle.Schema.Filters](BoxTurtle.Schema.Filters.md): Default filtering for `BoxTurtle.Schema.Query`, and a base for schema-specific filter modules.
  - [BoxTurtle.Schema.Filters.API](BoxTurtle.Schema.Filters.API.md): Behaviour for modules that turn a list of filters into `where` clauses.
See `BoxTurtle.Schema.Filters` for the default behaviour.

  - [BoxTurtle.Schema.Pagination](BoxTurtle.Schema.Pagination.md): Limit/offset pagination for Ecto queries.
  - [BoxTurtle.Schema.Query](BoxTurtle.Schema.Query.md): Generates the standard read functions of `BoxTurtle.Schema.Query.API` for an Ecto schema.
  - [BoxTurtle.Schema.Query.API](BoxTurtle.Schema.Query.API.md): Read operations generated by `use BoxTurtle.Schema.Query`.
  - [BoxTurtle.Schema.Query.Helpers](BoxTurtle.Schema.Query.Helpers.md): Option handling and query assembly used by the functions `BoxTurtle.Schema.Query` generates.
  - [BoxTurtle.Schema.Query.Options.API](BoxTurtle.Schema.Query.Options.API.md): Accessors for the settings given to `use BoxTurtle.Schema.Query`.
  - [BoxTurtle.Schema.Sort](BoxTurtle.Schema.Sort.md): Default sorting for `BoxTurtle.Schema.Query`, and a base for schema-specific sort modules.
  - [BoxTurtle.Schema.Sort.API](BoxTurtle.Schema.Sort.API.md): Behaviour for modules that turn a sort specification into `order_by` clauses.
See `BoxTurtle.Schema.Sort` for the supported specification forms.

- Runtime
  - [BoxTurtle.Runtime.Application.Helper](BoxTurtle.Runtime.Application.Helper.md): Utilities for building an application's supervision tree.
  - [BoxTurtle.Runtime.Config](BoxTurtle.Runtime.Config.md): Loads a runtime configuration script (standard `import Config` syntax, read with `Config.Reader`) into the
application environment. Combine with `BoxTurtle.Runtime.Config.Helper` to get properly typed values from
environment variables.
  - [BoxTurtle.Runtime.Config.Helper](BoxTurtle.Runtime.Config.Helper.md): Reads environment variables and parses them into typed, validated Elixir values, so config files
don't need their own parsing and validation.
  - [BoxTurtle.Runtime.DynamicInterface.ModuleDispatch](BoxTurtle.Runtime.DynamicInterface.ModuleDispatch.md): Generates a module that implements a behaviour by forwarding every callback to an implementation module,
or by generating no-op stubs.

- Debug
  - [BoxTurtle.Debug.PipeDebug](BoxTurtle.Debug.PipeDebug.md): Injects a `debug/3` function that can be dropped into the middle of a pipe to log a value, returning it unchanged.

- Common
  - [BoxTurtle.Common.IdUtils](BoxTurtle.Common.IdUtils.md): Small helpers for generating identifiers.
  - [BoxTurtle.Common.ReturnOkOr](BoxTurtle.Common.ReturnOkOr.md): Normalizes loosely-shaped results (`nil`, bare values, `:error`, `{:error, _}`) into `{:ok, value}` /
`{:error, reason}` tuples, plus macros that log a message together with the caller's stack trace.

- Security
  - [BoxTurtle.Security.Password](BoxTurtle.Security.Password.md): Generates random passwords containing at least one lowercase letter, one uppercase letter,
one digit and one special character.

