Packages

This library is a summary of the functions that are generally required for Matching Web service development.

Current section

Files

Jump to
servicex_matching lib servicex_matching_web controllers project_controller.ex
Raw

lib/servicex_matching_web/controllers/project_controller.ex

defmodule ServicexMatchingWeb.ProjectController do
use ServicexMatchingWeb, :controller
alias ServicexMatching.Organizations
alias ServicexMatching.Organizations.Project
action_fallback ServicexMatchingWeb.FallbackController
def index(conn, _params) do
projects = Organizations.list_projects()
render(conn, "index.json", projects: projects)
end
def create(conn, project_params) do
with {:ok, %Project{} = project} <- Organizations.create_project(project_params) do
conn
|> put_status(:created)
|> put_resp_header("location", project_path(conn, :show, project))
|> render("show.json", project: project)
end
end
def show(conn, %{"id" => id}) do
project = Organizations.get_project!(id)
render(conn, "show.json", project: project)
end
def update(conn, project_params) do
project = Organizations.get_project!(project_params["id"])
with {:ok, %Project{} = project} <- Organizations.update_project(project, project_params) do
render(conn, "show.json", project: project)
end
end
def delete(conn, %{"id" => id}) do
project = Organizations.get_project!(id)
with {:ok, %Project{}} <- Organizations.delete_project(project) do
send_resp(conn, :no_content, "")
end
end
def list_my_plojects(conn, _params) do
user_id = String.to_integer(conn.private.guardian_default_claims["sub"])
project = Organizations.list_project_by_user_id(user_id)
render(conn, "show.json", project: project)
end
def create_my_project(conn, project_params) do
user_id = String.to_integer(conn.private.guardian_default_claims["sub"])
with {:ok, %Project{} = project} <- Organizations.create_my_project(user_id, project_params) do
conn
|> put_status(:created)
|> put_resp_header("location", project_path(conn, :show, project))
|> render("show.json", project: project)
end
end
end