From 8f6cee6f45bf28d0224b76ab7d0ef86f8fea704f Mon Sep 17 00:00:00 2001 From: Alexandru Burlacu Date: Sun, 24 Sep 2017 16:25:45 +0300 Subject: [PATCH] implement logic fot GET endpoints --- lib/task_router.ex | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/lib/task_router.ex b/lib/task_router.ex index 48d5d0c..f138a81 100644 --- a/lib/task_router.ex +++ b/lib/task_router.ex @@ -5,6 +5,7 @@ defmodule ElixirDocker.Router.TasksRouter do """ use Plug.Router + import Ecto.Query alias ElixirDocker.Record alias ElixirDocker.Repo @@ -30,6 +31,17 @@ defmodule ElixirDocker.Router.TasksRouter do |> Enum.all? end + defp stringify_dates(raw_data) do + raw_data |> Enum.map(fn record -> + {{y, m, d}, _} = record.inserted_at + {due_y, due_m, due_d} = record.due_date + + record + |> Map.put(:inserted_at, "#{y}-#{m}-#{d}") + |> Map.put(:due_date, "#{due_y}-#{due_m}-#{due_d}") + end) + end + post "/" do data = conn.body_params @@ -49,15 +61,24 @@ defmodule ElixirDocker.Router.TasksRouter do end get "/" do - conn - |> response(200, %{info: "Welcome from listing", - data: [%{no: "posts"}, %{no: "posts"}]}) + data = Repo.all(from t in "tasks", + select: [:title, :description, + :due_date, :priority, + :inserted_at, :id]) + + conn |> response(200, %{info: "The available tasks", + data: stringify_dates(data)}) end get "/:id" do - conn - |> response(200, %{info: "Welcome from details", - data: %{no: "info on #{id}"}}) + data = Repo.all(from t in "tasks", + where: t.id == ^String.to_integer(id), + select: [:title, :description, + :due_date, :priority, + :inserted_at]) + + conn |> response(200, %{info: "Information about tasks ##{id}", + data: stringify_dates(data)}) end put "/:id" do