fuelen / ecto_erd

A mix task for generating Entity Relationship Diagram from Ecto schemas available in your project.
Apache License 2.0
215 stars 15 forks source link
dbml ecto elixir erd graphviz mermaid plantuml uml

Ecto.ERD

Hex.pm

A mix task for generating an ERD (Entity Relationship Diagram) in various formats for all Ecto schemas available in your project.

Supported formats:

Simple blog demo

Definition of schemas ```elixir defmodule Blog.Post do use Ecto.Schema schema "posts" do field(:title, :string) field(:text, :string) timestamps() belongs_to(:user, Blog.User) has_many(:comments, Blog.Comment) end end defmodule Blog.Comment do use Ecto.Schema schema "comments" do field(:text, :string) timestamps() belongs_to(:post, Blog.Post) belongs_to(:user, Blog.User) end end defmodule Blog.User do use Ecto.Schema schema "users" do field(:email, :string) has_many(:posts, Blog.Post) has_many(:comments, Blog.Comment) end end ```

Installation

The package can be installed by adding ecto_erd to your list of dependencies in mix.exs:

def deps do
  [
    {:ecto_erd, "~> 0.6", only: :dev}
  ]
end

Usage

Just run:

mix ecto.gen.erd

The command above produces a file in DOT format which can be converted to an image using graphviz utility:

dot -Tpng ecto_erd.dot -o erd.png

Configuration is possible via .ecto_erd.exs file. The docs can be found at https://hexdocs.pm/ecto_erd. Configuration examples and output for a couple of open-source projects can be found in EXAMPLES group of PAGES section.

Troubleshooting

Trying to run ecto_erd on an umbrella project? Did you get this error?

$ mix ecto.gen.erd
** (RuntimeError) Unable to detect `:otp_app`, please specify it explicitly

The easiest solution is to run the command on one of the apps in the apps/ directory. Another option is to create a configuration file and specify the :otp_app. See the docs for details.