Bulk Create
Cleanup
alias Explorer.DataFrame
alias Plato.Domain
alias Plato.Repo
Repo.transact(
fn ->
for problem <- Domain.list_problems!() do
IO.inspect(problem)
Domain.destroy_problem!(problem)
end
for student <- Domain.list_students!() do
IO.inspect(student)
Domain.destroy_student!(student)
end
for campus <- Domain.list_campuses!() do
IO.inspect(campus)
Domain.destroy_campus!(campus)
end
Repo.rollback(:test)
{:ok, nil}
end,
timeout: :timer.minutes(30)
)
Students
# df
rows =
df
|> DataFrame.to_rows(atom_keys: true)
Repo.transact(
fn ->
campuses = Domain.list_campuses!() |> Map.new(&{&1.name, &1})
rows
|> Enum.map(& &1.campus_name)
|> Enum.uniq()
|> Enum.reject(&Map.has_key?(campuses, &1))
|> Enum.each(fn campus_name ->
Domain.create_campus(%{name: campus_name}) |> IO.inspect()
end)
campuses = Domain.list_campuses!() |> Map.new(&{&1.name, &1})
results =
rows
|> Enum.map(fn params ->
campus = Map.fetch!(campuses, params.campus_name)
params = Map.delete(params, :campus_name) |> Map.put(:campus_id, campus.id)
Domain.create_student(params) |> IO.inspect()
end)
Repo.rollback(:test)
{:ok, results}
end,
timeout: :timer.minutes(30)
)
Problems
# df
rows =
df
|> DataFrame.to_rows(atom_keys: true)
Repo.transact(
fn ->
campuses = Domain.list_campuses!() |> Map.new(&{&1.name, &1})
rows
|> Enum.map(& &1.campus_name)
|> Enum.uniq()
|> Enum.reject(&Map.has_key?(campuses, &1))
|> Enum.each(fn campus_name ->
Domain.create_campus(%{name: campus_name}) |> IO.inspect()
end)
campuses = Domain.list_campuses!() |> Map.new(&{&1.name, &1})
results =
rows
|> Enum.map(fn params ->
campus = Map.fetch!(campuses, params.campus_name)
params = Map.delete(params, :campus_name) |> Map.put(:campus_id, campus.id)
Domain.create_problem(params) |> IO.inspect()
end)
Repo.rollback(:test)
{:ok, results}
end,
timeout: :timer.minutes(30)
)