Current section
Files
Jump to
Current section
Files
lib/supabase/postgrest/query_builder.ex
defmodule Supabase.PostgREST.QueryBuilder do
@moduledoc false
defstruct [:table, :method, :body, :params, :headers, :client]
@type t :: %__MODULE__{
table: String.t(),
method: :get | :post | :put | :patch | :delete,
params: map,
headers: map,
body: binary,
client: Supabase.Client.t()
}
def new(table, client) do
%__MODULE__{
table: table,
method: :get,
params: %{},
headers: %{},
body: "",
client: client
}
end
def change_method(%__MODULE__{} = q, method) do
%{q | method: method}
end
def change_body(%__MODULE__{} = q, body) do
%{q | body: body}
end
def add_header(%__MODULE__{} = q, "Prefer", value) do
%{q | headers: Map.put(q.headers, "Prefer", value)}
end
def add_header(%__MODULE__{} = q, _, nil), do: q
def add_header(%__MODULE__{} = q, key, value) do
%{q | headers: Map.put(q.headers, key, value)}
end
def del_header(%__MODULE__{} = q, key) do
%{q | headers: Map.delete(q.headers, key)}
end
def add_param(%__MODULE__{} = q, _, nil), do: q
def add_param(%__MODULE__{} = q, key, value) do
%{q | params: Map.put(q.params, key, value)}
end
def del_param(%__MODULE__{} = q, key) do
%{q | params: Map.delete(q.params, key)}
end
end