Something went wrong. Try again.
This repository has no description
Something went wrong. Try again.
1.5 kB · 49 lines
Elixir
at main
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950defmodule GitSyncWeb.DestinationController do use GitSyncWeb, :controller
alias GitSync.Destinations alias GitSync.Sources alias GitSync.Sync
def create(conn, %{"source_id" => source_id, "destination" => params}) do source = Sources.get(source_id)
case Destinations.create(source, params) do {:ok, _destination} -> Sync.sync_now(source.id)
conn |> put_flash(:info, "Destination added.") |> redirect(to: ~p"/sources/#{source}")
{:error, changeset} -> conn |> put_flash(:error, error_message(changeset)) |> redirect(to: ~p"/sources/#{source}") end end
def update(conn, %{"source_id" => source_id, "id" => id, "destination" => params}) do destination = Destinations.get(id) {:ok, _destination} = Destinations.update(destination, params)
conn |> put_flash(:info, "Destination updated.") |> redirect(to: ~p"/sources/#{source_id}") end
def delete(conn, %{"source_id" => source_id, "id" => id}) do destination = Destinations.get(id) {:ok, _destination} = Destinations.delete(destination)
conn |> put_flash(:info, "Destination removed.") |> redirect(to: ~p"/sources/#{source_id}") end
defp error_message(changeset) do changeset |> Ecto.Changeset.traverse_errors(fn {message, _opts} -> message end) |> Enum.map_join(", ", fn {field, messages} -> "#{field} #{Enum.join(messages, ", ")}" end) endend