# `Bylaw.Ecto.Schema`
[🔗](https://github.com/ryanzidago/bylaw/blob/v0.1.0-alpha.1/lib/bylaw/ecto/schema.ex#L1)

Reflection helpers for compiled Ecto schema modules.

These helpers intentionally inspect compiled modules instead of source code.
Projects commonly wrap `use Ecto.Schema` in their own macros, so source-based
detection would miss valid schemas.

# `info`

```elixir
@type info() :: %{
  module: module(),
  source: String.t(),
  prefix: String.t() | nil,
  fields: [atom()],
  associations: [atom()],
  field_sources: %{required(String.t()) =&gt; atom()}
}
```

Compiled schema metadata needed by database checks.

# `ecto_schema?`

```elixir
@spec ecto_schema?(module :: module()) :: boolean()
```

Returns true when `module` exports Ecto schema reflection functions.

# `info`

```elixir
@spec info(module :: module()) :: info()
```

Returns compiled schema metadata.

# `modules`

```elixir
@spec modules(otp_app :: atom()) :: [module()]
```

Returns compiled Ecto schema modules for an OTP application.

---

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