diff --git a/tasklite-core/source/ImportExport.hs b/tasklite-core/source/ImportExport.hs index bbb77dd..65f5b01 100644 --- a/tasklite-core/source/ImportExport.hs +++ b/tasklite-core/source/ImportExport.hs @@ -196,7 +196,7 @@ textToNote utc body = importUtcFormat :: TimeFormatString importUtcFormat = - toFormat ("YYYY-MM-DD H:MI:S" :: [Char]) + toFormat ("YYYY-MM-DD H:MI:S.ms" :: [Char]) data ImportTask = ImportTask @@ -496,11 +496,11 @@ setMissingFields importTaskRec = do , Task.modified_utc = if importTaskRec.task.modified_utc == "" || importTaskRec.task.modified_utc == "1970-01-01 00:00:00" + || importTaskRec.task.modified_utc == "1970-01-01 00:00:00.000" || parseUtc importTaskRec.task.modified_utc == parseUtcNum 0 then now - & timePrint - (toFormat ("YYYY-MM-DD H:MI:S.ms" :: [P.Char])) + & timePrint (toFormat importUtcFormat) & T.pack else show importTaskRec.task.modified_utc } @@ -879,7 +879,14 @@ editTaskByTask editMode conn taskToEdit = do -- SQL trigger which would overwrite the `closed_utc` field. P.when (isJust taskFixed.closed_utc) $ do now_ <- dateCurrent - updateTask conn taskFixed{Task.modified_utc = show @DateTime now_} + updateTask + conn + taskFixed + { Task.modified_utc = + now_ + & timePrint (toFormat importUtcFormat) + & T.pack + } tagWarnings <- insertTags conn Nothing taskFixed importTaskRec.tags noteWarnings <- insertNotes conn Nothing taskFixed notesCorrectUtc diff --git a/tasklite-core/test/ImportExportSpec.hs b/tasklite-core/test/ImportExportSpec.hs index 804e7f9..a7bddcc 100644 --- a/tasklite-core/test/ImportExportSpec.hs +++ b/tasklite-core/test/ImportExportSpec.hs @@ -32,7 +32,7 @@ import Config (defaultConfig) import FullTask (FullTask, emptyFullTask) import FullTask qualified import ImportExport (ImportTask (ImportTask, notes, tags, task), insertImportTask) -import Task (Task (body, ulid, user, modified_utc), emptyTask) +import Task (Task (body, modified_utc, ulid, user), emptyTask) import TaskToNote (TaskToNote (TaskToNote)) import TaskToNote qualified import TestUtils (withMemoryDb) @@ -187,10 +187,10 @@ spec = do ImportTask { task = emptyTask - { Task.ulid = "01hrz2qz7g0000f4wgrw89nzvm" + { Task.ulid = "01hrz2qz7g0004gmhn6t73xt9a" , Task.body = "Support getting the note body from stdin" , Task.user = "ad-si" - , Task.modified_utc = "2024-03-14 18:14:14" + , Task.modified_utc = "2024-03-14 18:14:14.000" } , notes = [] , tags = [] @@ -207,5 +207,4 @@ spec = do task.body `shouldBe` expectedImpTask.task.body task.user `shouldBe` expectedImpTask.task.user task.modified_utc `shouldBe` expectedImpTask.task.modified_utc - _ -> P.die "Found more than one note" diff --git a/tasklite-core/test/LibSpec.hs b/tasklite-core/test/LibSpec.hs index a525adc..968cad5 100644 --- a/tasklite-core/test/LibSpec.hs +++ b/tasklite-core/test/LibSpec.hs @@ -40,6 +40,7 @@ import Test.Hspec ( ) import Config (defaultConfig) +import Data.Hourglass (TimeFormat (..), timePrint) import FullTask (FullTask, emptyFullTask) import FullTask qualified import ImportExport (EditMode (ApplyPreEdit), editTaskByTask) @@ -522,11 +523,11 @@ spec = do tasks :: [Task] <- query_ memConn "SELECT * FROM tasks" case tasks of [task] -> do - task.closed_utc `shouldBe` Just "2024-05-08 10:04:00" + task.closed_utc `shouldBe` Just "2024-05-08 10:04:00.000" task.state `shouldBe` Just Done now_ <- dateCurrent - let today = now_ & show & T.take 10 - task.modified_utc `shouldSatisfy` (today `T.isPrefixOf`) + let today = now_ & timePrint (toFormat ("YYYY-MM-DD" :: [P.Char])) + T.unpack task.modified_utc `shouldStartWith` today _ -> P.die "Found more than one task" it "lets you add notes" $ do