From 12ee321c64a964a56ad26a8d342f52c76250a0a3 Mon Sep 17 00:00:00 2001 From: Tom Willemse Date: Thu, 4 Jul 2013 23:55:43 +0200 Subject: Task state and priority editing --- pg-datastore.lisp | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) (limited to 'pg-datastore.lisp') diff --git a/pg-datastore.lisp b/pg-datastore.lisp index d6b3e54..0952ab0 100644 --- a/pg-datastore.lisp +++ b/pg-datastore.lisp @@ -46,8 +46,10 @@ (defmethod datastore-get-story ((datastore pg-datastore) id) (with-connection (connection-spec datastore) (append (query (:select :* :from 'story :where (:= 'id id)) :alist) - `((tasks . ,(query (:select :* :from 'task - :where (:= 'story-id id)) + `((tasks . ,(query (:order-by + (:select :* :from 'task + :where (:= 'story-id id)) + 'priority) :alists)))))) (defmethod datastore-post-story @@ -74,23 +76,24 @@ :assignee ""))) (save-dao obj)))) -(defmethod datastore-story-get-state ((datastore pg-datastore) id) +(defmethod datastore-story-get-state ((datastore pg-datastore) type id) (with-connection (connection-spec datastore) - (query (:select 'state :from 'story :where (:= 'id id)) :single))) + (query (:select 'state :from type :where (:= 'id id)) :single))) -(defmethod datastore-story-set-state ((datastore pg-datastore) id state) +(defmethod datastore-story-set-state + ((datastore pg-datastore) type id state) (with-connection (connection-spec datastore) - (execute (:update 'story :set 'state state :where (:= 'id id))))) + (execute (:update type :set 'state state :where (:= 'id id))))) (defmethod datastore-story-change-priority - ((datastore pg-datastore) id dir) + ((datastore pg-datastore) type id dir) (with-connection (connection-spec datastore) - (let* ((current-priority (query (:select 'priority :from 'story + (let* ((current-priority (query (:select 'priority :from type :where (:= 'id id)) :single)) (next-priority (funcall (ecase dir (:up #'-) (:down #'+)) current-priority 1))) - (execute (:update 'story :set 'priority current-priority + (execute (:update type :set 'priority current-priority :where (:= 'priority next-priority))) - (execute (:update 'story :set 'priority next-priority + (execute (:update type :set 'priority next-priority :where (:= 'id id)))))) -- cgit v1.2.3-54-g00ecf