Skip to content

Commit ad186c3

Browse files
committed
When exporting data with csv/json/ndjson include a created_utc field
1 parent 6f5d10d commit ad186c3

5 files changed

Lines changed: 29 additions & 18 deletions

File tree

tasklite-core/source/FullTask.hs

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Data type to represent tasks from the `tasks_view`
66
module FullTask where
77

88
import 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
7576
data 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
118120
instance 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

tasklite-core/source/ImportTask.hs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ import Utils (
9090
parseUtcNum,
9191
setDateTime,
9292
toUlidTime,
93+
ulidText2utc,
9394
zeroTime,
9495
zeroUlidTxt,
9596
)
@@ -487,6 +488,7 @@ importTaskToFullTask ImportTask{task, notes, tags} =
487488
FullTask.FullTask
488489
{ FullTask.ulid = task.ulid
489490
, FullTask.body = task.body
491+
, FullTask.created_utc = ulidText2utc task.ulid
490492
, FullTask.modified_utc = task.modified_utc
491493
, FullTask.awake_utc = task.awake_utc
492494
, FullTask.ready_utc = task.ready_utc

tasklite-core/test/ImportExportSpec.hs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ spec = do
166166
_ -> ""
167167
updatedTask
168168
{ FullTask.ulid = ""
169+
, FullTask.created_utc = Nothing
169170
, FullTask.modified_utc = ""
170171
, FullTask.user = ""
171172
}
@@ -653,6 +654,7 @@ spec = do
653654
\\"awake_utc\":null,\
654655
\\"body\":\"Buy milk\",\
655656
\\"closed_utc\":null,\
657+
\\"created_utc\":\"2024-11-18 14:14:07.491\",\
656658
\\"due_utc\":null,\
657659
\\"group_ulid\":null,\
658660
\\"metadata\":null,\

tasklite-core/test/LibSpec.hs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,7 @@ spec = do
374374
updatedTask `shouldSatisfy` (\task -> task.user /= "")
375375
updatedTask
376376
{ FullTask.ulid = ""
377+
, FullTask.created_utc = Nothing
377378
, FullTask.modified_utc = ""
378379
, FullTask.user = ""
379380
}
@@ -396,6 +397,7 @@ spec = do
396397
updatedTask `shouldSatisfy` (\task -> task.user /= "")
397398
updatedTask
398399
{ FullTask.ulid = ""
400+
, FullTask.created_utc = Nothing
399401
, FullTask.modified_utc = ""
400402
, FullTask.user = ""
401403
}

tasklite-core/test/TypesSpec.hs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ spec = do
147147
awake_utc: null
148148
body: Sample task
149149
closed_utc: null
150+
created_utc: null
150151
due_utc: null
151152
group_ulid: null
152153
metadata: null

0 commit comments

Comments
 (0)