Misc cleanup to tasks (#37)

This commit is contained in:
Matthew Ryan Dillon 2020-08-09 20:40:15 -07:00 committed by GitHub
parent aa02a8441b
commit 177067ab00
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 20 additions and 50 deletions

View file

@ -4,16 +4,6 @@ defmodule Planner.Tasks do
alias Planner.Repo alias Planner.Repo
alias Planner.Tasks.Task alias Planner.Tasks.Task
def add_task(attrs) do
attrs =
attrs
|> cast_finished_at()
%Task{}
|> Task.changeset(attrs)
|> Repo.insert()
end
def list_all_tasks, do: Repo.all(Task) def list_all_tasks, do: Repo.all(Task)
def list_unfinished_tasks do def list_unfinished_tasks do
@ -34,39 +24,32 @@ defmodule Planner.Tasks do
|> Repo.all() |> Repo.all()
end end
def change_task(%Task{} = task) do def get_task!(id), do: Repo.get!(Task, id)
task
|> Task.changeset(%{})
end
def cast_finished_at(attrs) do def create_task(attrs \\ %{}) do
attrs %Task{}
|> Map.update("finished_at", nil, fn |> Task.changeset(attrs)
"true" -> NaiveDateTime.utc_now() |> Repo.insert()
"false" -> nil
val -> val
end)
end end
def update_task(%Task{} = task, attrs) do def update_task(%Task{} = task, attrs) do
attrs =
attrs
|> cast_finished_at()
task task
|> Task.changeset(attrs) |> Task.changeset(attrs)
|> Repo.update() |> Repo.update()
end end
def get_task!(id), do: Repo.get!(Task, id)
def exists?(id), do: Repo.exists?(from(t in Task, where: t.id == ^id))
def delete_task_by_id!(id) do def delete_task_by_id!(id) do
get_task!(id) get_task!(id)
|> Repo.delete() |> Repo.delete()
end end
def change_task(%Task{} = task) do
task
|> Task.changeset(%{})
end
def task_exists?(id), do: Repo.exists?(from(t in Task, where: t.id == ^id))
def finish_task_by_id!(id) do def finish_task_by_id!(id) do
get_task!(id) get_task!(id)
|> Task.finish_task() |> Task.finish_task()
@ -83,7 +66,7 @@ defmodule Planner.Tasks do
case task_id do case task_id do
:error -> :error :error -> :error
_ -> exists?(task_id) _ -> task_exists?(task_id)
end end
end end
end end

View file

@ -13,7 +13,6 @@ defmodule Planner.Tasks.Task do
timestamps() timestamps()
end end
@doc false
def changeset(task, attrs) do def changeset(task, attrs) do
task task
|> cast(attrs, [:value, :filed_at, :finished_at, :due_at]) |> cast(attrs, [:value, :filed_at, :finished_at, :due_at])
@ -21,10 +20,10 @@ defmodule Planner.Tasks.Task do
|> validate_length(:value, min: 3) |> validate_length(:value, min: 3)
end end
@doc false
def finish_task(task) do def finish_task(task) do
now = NaiveDateTime.utc_now() |> NaiveDateTime.truncate(:second)
# TODO, this should check if `finished_at` is not nil, first # TODO, this should check if `finished_at` is not nil, first
change(task, finished_at: now) change(task, finished_at: now())
end end
defp now(), do: NaiveDateTime.utc_now() |> NaiveDateTime.truncate(:second)
end end

View file

@ -214,18 +214,6 @@ defmodule TaskEditComponent do
<%= error_tag(f, :due_at) %> <%= error_tag(f, :due_at) %>
</div> </div>
<div class="field">
<%= label(f, :finished_at, class: "label") do %>
<%= if(is_nil(@task.finished_at)) do %>
<%= checkbox(f, :finished_at) %>
<% else %>
<%= checkbox(f, :finished_at, checked_value: @task.finished_at) %>
<% end %>
finished
<% end %>
<%= error_tag(f, :finished_at) %>
</div>
<div class="control"> <div class="control">
<%= submit("save", class: "button is-dark is-small") %> <%= submit("save", class: "button is-dark is-small") %>
</div> </div>

View file

@ -12,7 +12,7 @@ defmodule PlannerWeb.TasksLive do
{:ok, socket} {:ok, socket}
end end
def handle_params(%{"id" => task_id}, _, socket) do def handle_params(%{"task_id" => task_id}, _, socket) do
case Tasks.verify_task_id_from_url(task_id) do case Tasks.verify_task_id_from_url(task_id) do
true -> {:noreply, assign(socket, :active_task, task_id)} true -> {:noreply, assign(socket, :active_task, task_id)}
_ -> {:noreply, push_patch(socket, to: Routes.tasks_path(socket, :index))} _ -> {:noreply, push_patch(socket, to: Routes.tasks_path(socket, :index))}
@ -76,7 +76,7 @@ defmodule PlannerWeb.TasksLive do
end end
def handle_event("new-task", %{"task" => task_params}, socket) do def handle_event("new-task", %{"task" => task_params}, socket) do
case Tasks.add_task(task_params) do case Tasks.create_task(task_params) do
{:ok, task} -> {:ok, task} ->
socket = socket =
socket socket

View file

@ -53,8 +53,8 @@ defmodule PlannerWeb.Router do
pipe_through([:browser, :require_authenticated_user]) pipe_through([:browser, :require_authenticated_user])
live("/", TasksLive, :index) live("/", TasksLive, :index)
live("/:id", TasksLive, :show) live("/:task_id", TasksLive, :show)
live("/:id/edit", TasksLive, :edit) live("/:task_id/edit", TasksLive, :edit)
get("/users/settings", UserSettingsController, :edit) get("/users/settings", UserSettingsController, :edit)
put("/users/settings/update_password", UserSettingsController, :update_password) put("/users/settings/update_password", UserSettingsController, :update_password)