Quando instalamos Ecto, ganhamos também alguns geradores que vão nos auxiliar. O comando irá gerar a configuração necessária para nos conectar ao banco de dados.
mix ecto.gen.repo -r CoffeeShop.Repo
> mix ecto.gen.repo -r CoffeeShop.Repo* creating lib/coffee_shop* creating lib/coffee_shop/repo.ex* creating config/config.exsDon't forget to add your new repo to your supervision tree(typically in lib/coffee_shop/application.ex): def start(_type, _args) do children = [ CoffeeShop.Repo, ]And to add it to the list of Ecto repositories in yourconfiguration files (so Ecto tasks work as expected): config :coffee_shop, ecto_repos: [CoffeeShop.Repo]
Ele gerou o arquivo lib/coffee_shop/repo.ex com a configuração para o banco de dados. Também foi adicionadm em config/config.exs a configuração de acesso ao banco. E por fim, nos avisou que precisamos fazer duas coisas:
Adicionar ao supervisor de nossa aplicação o módulo criado CoffeeShop.Repo
Adicionar a configuraçãao emconfig/config.exs
Vamos adicionar o supevisor do Ecto ao supervisor de nossa aplicação. Abra lib/coffee_shop/application.ex que criamos para dar suporte a árvore de supervisor e adicione o módulo Repo a lista children.
lib/coffee_shop/application.ex
defmoduleCoffeeShop.ApplicationdouseApplicationdefstart(_type,_args) do children = [CoffeeShop.Repo ] opts = [strategy: :one_for_one, name: CoffeeShop.Supervisor]Supervisor.start_link(children, opts)endend
Com isso temos o Repo como filho de nosso supervisor.
Agora vamos finalizar a configuração, adicionando a configuração de nosso repositório ecto em config/confg.exs
A configuração da linha 6 vai depender de como você configurou seu banco de dados.
Feito isso, temos o Ecto configurado para nosso banco de dados. Agora vamos criar nosso banco. Tendo a adição do Ecto ao projeto, podemos simplesmente criar nosso banco usando o comando
mix ecto.create
> mix ecto.create
Compiling 6 files (.ex)
Generated coffee_shop app
The database for CoffeeShop.Repo has been created
Nossa aplicação tem suporte a banco de dados postgres. Matamos então mais um passo