Temos a página de configuração nesse link. Mas farei a configuração por aqui também. Primeiro precisamos instalar as dependências
ecto_sql -> Wrapper do banco de dados
postgrex -> Adaptador do Ecto para Postgress
Adicione a suas dependencias os dois.
mix.exs
defmodule CoffeeShop.MixProject do
use Mix.Project
def project do
[
app: :coffee_shop,
version: "0.1.0",
elixir: "~> 1.15",
start_permanent: Mix.env() == :prod,
deps: deps()
]
end
# Run "mix help compile.app" to learn about applications.
def application do
[
extra_applications: [:logger],
mod: {CoffeeShop.Application, []}
]
end
# Run "mix help deps" to learn about dependencies.
defp deps do
[
{:tesla, "~> 1.4"},
{:bypass, "~> 2.1"},
{:ecto_sql, "~> 3.0"},
{:postgrex, ">= 0.0.0"}
]
end
end
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.exs
Don'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 your
configuration 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
defmodule CoffeeShop.Application do
use Application
def start(_type, _args) do
children = [
CoffeeShop.Repo
]
opts = [strategy: :one_for_one, name: CoffeeShop.Supervisor]
Supervisor.start_link(children, opts)
end
end
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