From 8e1040ff031cc5ed59016732f14463ce91cbe2e2 Mon Sep 17 00:00:00 2001 From: kjubybot Date: Sat, 5 Apr 2025 13:51:20 +0200 Subject: [PATCH] api handle to add tasks --- .../controllers/ext_api/task_controller.ex | 24 +++++++++++++++++++ .../codebattle/lib/codebattle_web/router.ex | 1 + 2 files changed, 25 insertions(+) create mode 100644 services/app/apps/codebattle/lib/codebattle_web/controllers/ext_api/task_controller.ex diff --git a/services/app/apps/codebattle/lib/codebattle_web/controllers/ext_api/task_controller.ex b/services/app/apps/codebattle/lib/codebattle_web/controllers/ext_api/task_controller.ex new file mode 100644 index 000000000..4809fc754 --- /dev/null +++ b/services/app/apps/codebattle/lib/codebattle_web/controllers/ext_api/task_controller.ex @@ -0,0 +1,24 @@ +defmodule CodebattleWeb.ExtApi.TaskController do + use CodebattleWeb, :controller + + import Plug.Conn + + plug(CodebattleWeb.Plugs.TokenAuth) + + def create(conn, params) do + params = for {k, v} <- params, into: %{}, do: {String.to_atom(k), v} + + case Codebattle.Task.changeset(%Codebattle.Task{}, params) do + %{valid?: true} -> + Codebattle.Task.upsert!(params) + send_resp(conn, 201, "") + + %{valid?: false, errors: errors} -> + errors = Map.new(errors, fn {k, {v, _}} -> {k, v} end) + + conn + |> put_status(:bad_request) + |> json(%{errors: errors}) + end + end +end diff --git a/services/app/apps/codebattle/lib/codebattle_web/router.ex b/services/app/apps/codebattle/lib/codebattle_web/router.ex index 979010d43..d80487c7b 100644 --- a/services/app/apps/codebattle/lib/codebattle_web/router.ex +++ b/services/app/apps/codebattle/lib/codebattle_web/router.ex @@ -70,6 +70,7 @@ defmodule CodebattleWeb.Router do scope "/ext_api", CodebattleWeb.ExtApi, as: :ext_api do pipe_through([:ext_api]) post("/users", UserController, :create) + post("/tasks", TaskController, :create) end scope "/", CodebattleWeb do