From 4066a4f0b2ad6c8630183a8bb1d60594556a8342 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Sun, 6 Apr 2025 12:15:48 +0200 Subject: [PATCH] feat: allow completing tasks --- lib/putzplan/accounts/user.ex | 2 +- lib/putzplan/tasks/completed_task.ex | 19 +++++++++++-------- lib/putzplan/tasks/task.ex | 8 +------- 3 files changed, 13 insertions(+), 16 deletions(-) diff --git a/lib/putzplan/accounts/user.ex b/lib/putzplan/accounts/user.ex index 5cb206b..742995a 100644 --- a/lib/putzplan/accounts/user.ex +++ b/lib/putzplan/accounts/user.ex @@ -82,7 +82,7 @@ defmodule Putzplan.Accounts.User do end attributes do - attribute :id, :uuid, allow_nil?: false, primary_key?: true + uuid_primary_key :id, writable?: true, default: nil attribute :name, :string, allow_nil?: false end end diff --git a/lib/putzplan/tasks/completed_task.ex b/lib/putzplan/tasks/completed_task.ex index 980853f..9ca2ee0 100644 --- a/lib/putzplan/tasks/completed_task.ex +++ b/lib/putzplan/tasks/completed_task.ex @@ -3,6 +3,15 @@ defmodule Putzplan.Tasks.CompletedTask do actions do defaults [:read] + + create :create do + argument :user, :map, allow_nil?: false + argument :task, :map, allow_nil?: false + + change set_attribute(:completion, &Date.utc_today/0) + change manage_relationship(:user, :users, type: :append) + change manage_relationship(:task, :tasks, type: :append) + end end attributes do @@ -11,23 +20,17 @@ defmodule Putzplan.Tasks.CompletedTask do attribute :completion, :date do allow_nil? false end - - attribute :user_id, :uuid do - allow_nil? false - end - - attribute :task_id, :uuid do - allow_nil? false - end end relationships do belongs_to :users, Putzplan.Accounts.User do allow_nil? false + source_attribute :user_id end belongs_to :tasks, Putzplan.Tasks.Task do allow_nil? false + source_attribute :task_id end end diff --git a/lib/putzplan/tasks/task.ex b/lib/putzplan/tasks/task.ex index 1e647db..d4b2d6f 100644 --- a/lib/putzplan/tasks/task.ex +++ b/lib/putzplan/tasks/task.ex @@ -5,13 +5,7 @@ defmodule Putzplan.Tasks.Task do data_layer: AshSqlite.DataLayer actions do - # Use the default implementation of the :read action - defaults [:read] - - # and a create action, which we'll customize later - create :create do - accept [:description, :repetition_days] - end + defaults [:read, create: :*] end sqlite do