Current section

Files

Jump to
electric lib electric plug delete_shape_plug.ex
Raw

lib/electric/plug/delete_shape_plug.ex

defmodule Electric.Plug.DeleteShapePlug do
use Plug.Builder, copy_opts_to_assign: :config
alias Electric.Shapes.Api
plug :fetch_query_params
plug :put_resp_content_type, "application/json"
plug :validate_request
plug :truncate_or_delete_shape
defp validate_request(%Plug.Conn{assigns: %{config: config}} = conn, _) do
api = Access.fetch!(config, :api)
all_params =
Map.merge(conn.query_params, conn.path_params)
|> Map.take(["table", "handle"])
|> Map.put("offset", "-1")
case Api.validate_for_delete(api, all_params) do
{:ok, request} ->
assign(conn, :request, request)
{:error, response} ->
conn
|> Api.Response.send(response)
|> halt()
end
end
defp truncate_or_delete_shape(%Plug.Conn{} = conn, _) do
%{assigns: %{request: request}} = conn
Api.delete_shape(conn, request)
end
end