defmodule Mix.Tasks.Setup do
@moduledoc """
Seeds module. Populate the database with data.
"""
use Mix.Task
alias Bbox.Parties
alias Bbox.Candidates
alias Bbox.Voters
alias Bbox.Votes
@parties [
%{
initials: "PT",
name: "Partido dos Trabalhadores",
description: "Partido dos Trabalhadores"
},
%{
initials: "PSDB",
name: "Partido da Social Democracia Brasileira",
description: "Partido da Social Democracia Brasileira"
},
%{
initials: "PSOL",
name: "Partido Socialismo e Liberdade",
description: "Partido Socialismo e Liberdade"
},
%{
initials: "PCdoB",
name: "Partido Comunista dos Direitos e Obrigacoes Brasileiros",
description: "Partido Comunista dos Direitos e Obrigacoes Brasileiros"
},
%{
initials: "PMDB",
name: "Partido da Mulher",
description: "Partido da Mulher"
}
]
@candidates [
%{
first_name: "João",
last_name: "Silva",
email: "joao@example.com"
},
%{
first_name: "Maria",
last_name: "Silva",
email: "maria@example.com"
},
%{
first_name: "José",
last_name: "Silva",
email: "jose@example.com"
}
]
@doc """
Populate the database with data.
"""
@spec run(any()) :: any()
def run(_) do
Mix.Task.run("ecto.drop")
Mix.Task.run("ecto.create")
Mix.Task.run("ecto.migrate")
Mix.Task.run("app.start")
{:ok, voter} = Voters.insert(%{email: "elioenaiferrari@gmail.com", username: "Eli"})
parties =
Enum.map(@parties, fn party ->
{:ok, party} = Parties.insert(party)
party
end)
Enum.map(@candidates, fn candidate ->
party = Enum.random(parties)
{:ok, candidate} = Candidates.insert(party, candidate)
candidate
end)
IO.inspect(voter.private_key)
Mix.Task.clear()
end
end