# Inspecto
[![Module Version](https://img.shields.io/hexpm/v/inspecto.svg)](https://hex.pm/packages/inspecto)
[![Hex Docs](https://img.shields.io/badge/hex-docs-lightgreen.svg)](https://hexdocs.pm/inspecto/)
[![Total Download](https://img.shields.io/hexpm/dt/inspecto.svg)](https://hex.pm/packages/inspecto)
[![License](https://img.shields.io/hexpm/l/inspecto.svg)](https://hex.pm/packages/inspecto)
[![Last Updated](https://img.shields.io/github/last-commit/fireproofsocks/inspecto.svg)](https://github.com/fireproofsocks/inspecto/commits/master)
`Inspecto` is a utility to facilitate the inspection of `Ecto` schemas (via reflection) to view the field names, data types, default values, etc.
Note that `Ecto` schema modules do not contain full information about your database schemas: they only contain enough information to act as a viable intermediary for the Elixir layer. You cannot, for example, know character length limits or input constraints by merely inspecting `Ecto` schemas. Although `Ecto` _migrations_ contain a lot more of this information, they too aren't ideal for the purpose because (by design) migrations are additive with changes spread out over time, and importantly, _there is no requirement that a database be defined via migrations!_ So `Inspecto` attempts to provide insight into what it can.
## Installation
If [available in Hex](https://hex.pm/docs/publish), the package can be installed
by adding `inspecto` to your list of dependencies in `mix.exs`:
```elixir
def deps do
[
{:inspecto, "~> 0.4.0"}
]
end
```
## Usage
The envisioned usage of this package is to call it from within one of your application's `@moduledoc` tags, e.g.
```elixir
defmodule MyApp.MyModel do
@moduledoc """
Here is a summary of my Ecto schemas:
#{ MyApp.MyModel |> Inspecto.modules() |> Inspecto.summarize(format: :html)}
"""
end
```
## Image Attribution
Inspect by Musaplated from [NounProject.com](https://thenounproject.com/icon/inspect-147710/)