@@ -6,7 +6,7 @@ Data type to represent tasks from the `tasks_view`
66module FullTask where
77
88import Protolude (
9- Applicative ((<*>) ),
9+ Applicative (pure , (<*>) ),
1010 Either (Left , Right ),
1111 Eq ,
1212 Float ,
@@ -69,12 +69,14 @@ import Task (
6969 TaskState ,
7070 emptyTask ,
7171 )
72+ import Utils (ulidText2utc )
7273
7374
7475-- | Final user-facing format of tasks
7576data FullTask = FullTask
7677 { ulid :: Text -- TODO: Use Ulid type
7778 , body :: Text
79+ , created_utc :: Maybe Text
7880 , modified_utc :: Text
7981 , awake_utc :: Maybe Text
8082 , ready_utc :: Maybe Text
@@ -116,25 +118,26 @@ parseJsonArrayField fieldName value = case fieldData value of
116118
117119-- For conversion from SQLite with SQLite.Simple
118120instance FromRow FullTask where
119- fromRow =
120- FullTask
121- <$> field
122- <*> field
123- <*> field
124- <*> field
125- <*> field
126- <*> field
127- <*> field
128- <*> field
129- <*> field
130- <*> field
131- <*> field
132- <*> field
133- <*> field
121+ fromRow = do
122+ ulidValue <- field
123+ FullTask ulidValue
124+ <$> field -- body
125+ <*> pure (ulidText2utc ulidValue) -- created_utc (derived from ULID)
126+ <*> field -- modified_utc
127+ <*> field -- awake_utc
128+ <*> field -- ready_utc
129+ <*> field -- waiting_utc
130+ <*> field -- review_utc
131+ <*> field -- due_utc
132+ <*> field -- closed_utc
133+ <*> field -- state
134+ <*> field -- group_ulid
135+ <*> field -- repetition_duration
136+ <*> field -- recurrence_duration
134137 <*> fieldWith (parseJsonArrayField " tags" )
135138 <*> fieldWith (parseJsonArrayField " notes" )
136- <*> field
137- <*> field
139+ <*> field -- priority
140+ <*> field -- user
138141 <*> ( field <&> \ case
139142 Just (Object obj) -> Just $ Object obj
140143 _ -> Nothing
@@ -174,6 +177,7 @@ emptyFullTask =
174177 FullTask
175178 { ulid = " "
176179 , body = " "
180+ , created_utc = Nothing
177181 , modified_utc = " "
178182 , awake_utc = Nothing
179183 , ready_utc = Nothing
0 commit comments