Skip to content

Commit cd61985

Browse files
authored
Merge pull request #2134 from hexlet-codebattle/tasks-api-handle
api handle to add tasks
2 parents 9425fb5 + 8e1040f commit cd61985

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
defmodule CodebattleWeb.ExtApi.TaskController do
2+
use CodebattleWeb, :controller
3+
4+
import Plug.Conn
5+
6+
plug(CodebattleWeb.Plugs.TokenAuth)
7+
8+
def create(conn, params) do
9+
params = for {k, v} <- params, into: %{}, do: {String.to_atom(k), v}
10+
11+
case Codebattle.Task.changeset(%Codebattle.Task{}, params) do
12+
%{valid?: true} ->
13+
Codebattle.Task.upsert!(params)
14+
send_resp(conn, 201, "")
15+
16+
%{valid?: false, errors: errors} ->
17+
errors = Map.new(errors, fn {k, {v, _}} -> {k, v} end)
18+
19+
conn
20+
|> put_status(:bad_request)
21+
|> json(%{errors: errors})
22+
end
23+
end
24+
end

services/app/apps/codebattle/lib/codebattle_web/router.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ defmodule CodebattleWeb.Router do
7070
scope "/ext_api", CodebattleWeb.ExtApi, as: :ext_api do
7171
pipe_through([:ext_api])
7272
post("/users", UserController, :create)
73+
post("/tasks", TaskController, :create)
7374
end
7475

7576
scope "/", CodebattleWeb do

0 commit comments

Comments
 (0)