@@ -8,7 +8,7 @@ import Protolude as P
88
99import Data.Hourglass
1010import Data.Text as T
11- import qualified Data.Time.ISO8601.Duration as Iso8601
11+ import qualified Data.Time.ISO8601.Duration as Iso
1212import Data.ULID
1313import Data.Coerce
1414import Data.Yaml as Yaml
@@ -339,15 +339,18 @@ setReadyUtc conf connection datetime ids = do
339339 pure $ vsep docs
340340
341341
342- waitFor :: Config -> Connection -> Duration -> [Text ] -> IO (Doc AnsiStyle )
342+ waitFor
343+ :: Config -> Connection -> Iso. Duration -> [Text ] -> IO (Doc AnsiStyle )
343344waitFor conf connection duration ids = do
344345 docs <- forM ids $ \ idSubstr ->
345346 execWithTask conf connection idSubstr $ \ task -> do
346347 now <- timeCurrentP
347348 let
348349 taskUlid@ (TaskUlid idText) = primaryKey task
349350 nowAsText = (pack . timePrint (utcFormat conf)) now
350- threeDays = (pack . timePrint (utcFormat conf)) (now `timeAdd` duration)
351+ threeDays = (pack . timePrint (utcFormat conf))
352+ (utcTimeToDateTime $ Iso. addDuration duration $
353+ dateTimeToUtcTime $ timeFromElapsedP now)
351354 prettyBody = dquotes (pretty $ Task. body task)
352355 prettyId = dquotes (pretty idText)
353356
@@ -373,18 +376,21 @@ waitFor conf connection duration ids = do
373376
374377waitTasks :: Config -> Connection -> [Text ] -> IO (Doc AnsiStyle )
375378waitTasks conf connection =
376- waitFor conf connection $ mempty { durationHours = 72 }
379+ waitFor conf connection $
380+ Iso. DurationDate (Iso. DurDateDay (Iso. DurDay 3 ) Nothing )
377381
378382
379383reviewTasksIn :: Config -> Connection
380- -> Duration -> [Text ] -> IO (Doc AnsiStyle )
381- reviewTasksIn conf connection days ids = do
384+ -> Iso. Duration -> [Text ] -> IO (Doc AnsiStyle )
385+ reviewTasksIn conf connection duration ids = do
382386 docs <- forM ids $ \ idSubstr -> do
383387 execWithTask conf connection idSubstr $ \ task -> do
384388 now <- timeCurrentP
385389 let
386390 taskUlid@ (TaskUlid idText) = primaryKey task
387- xDays = (pack . timePrint (utcFormat conf)) (now `timeAdd` days)
391+ xDays = (pack . timePrint (utcFormat conf))
392+ (utcTimeToDateTime $ Iso. addDuration duration $
393+ dateTimeToUtcTime $ timeFromElapsedP now)
388394 prettyBody = dquotes (pretty $ Task. body task)
389395 prettyId = dquotes (pretty idText)
390396 warningStart = " ⚠️ Task" <+> prettyBody <+> " with id" <+> prettyId
@@ -498,14 +504,14 @@ createNextRecurrence conf connection task = do
498504 isoDurEither =
499505 durTextEither
500506 <&> encodeUtf8
501- >>= Iso8601 . parseDuration
507+ >>= Iso . parseDuration
502508
503509 showEither e = e
504510 & (either (const Nothing ) Just )
505511 <&> utcTimeToDateTime
506512 <&> showDateTime
507513
508- nextDueMb = liftA2 Iso8601 . addDuration isoDurEither
514+ nextDueMb = liftA2 Iso . addDuration isoDurEither
509515 (maybeToEither " Task has no due UTC" (dueUtcMb <&> dateTimeToUtcTime))
510516
511517 runBeamSqlite connection $ do
@@ -519,13 +525,13 @@ createNextRecurrence conf connection task = do
519525 , Task. due_utc = val_ $ nextDueMb & showEither
520526
521527 , Task. awake_utc = val_ $
522- (liftA2 Iso8601 . addDuration isoDurEither
528+ (liftA2 Iso . addDuration isoDurEither
523529 (maybeToEither " Task has no awake UTC"
524530 ((Task. awake_utc task) >>= parseUtc <&> dateTimeToUtcTime)))
525531 & showEither
526532
527533 , Task. ready_utc = val_ $
528- (liftA2 Iso8601 . addDuration isoDurEither
534+ (liftA2 Iso . addDuration isoDurEither
529535 (maybeToEither " Task has no ready UTC"
530536 ((Task. ready_utc task) >>= parseUtc <&> dateTimeToUtcTime)))
531537 & showEither
@@ -661,9 +667,9 @@ durationToIso dur =
661667
662668
663669repeatTasks ::
664- Config -> Connection -> Duration -> [IdText ] -> IO (Doc AnsiStyle )
670+ Config -> Connection -> Iso. Duration -> [IdText ] -> IO (Doc AnsiStyle )
665671repeatTasks conf connection duration ids = do
666- let durIso = durationToIso duration
672+ let durationIsoText = decodeUtf8 $ Iso. formatDuration duration
667673
668674 docs <- forM ids $ \ idSubstr ->
669675 execWithTask conf connection idSubstr $ \ task -> do
@@ -677,28 +683,29 @@ repeatTasks conf connection duration ids = do
677683 runBeamSqlite connection $ runUpdate $
678684 update (_tldbTasks taskLiteDb)
679685 (\ task_ -> mconcat
680- [ (Task. repetition_duration task_) <-. val_ (Just durIso )
686+ [ (Task. repetition_duration task_) <-. val_ (Just durationIsoText )
681687 , (Task. group_ulid task_) <-. val_ (Just groupUlid)
682688 ])
683689 (\ task_ -> primaryKey task_ ==. val_ taskUlid)
684690
685691 pure $ " 📅 Set repeat duration of task" <+> prettyBody
686692 <+> " with id" <+> prettyId
687- <+> " to" <+> dquotes (pretty $ durIso )
693+ <+> " to" <+> dquotes (pretty $ durationIsoText )
688694
689695 pure $ vsep docs
690696
691697
692698recurTasks ::
693- Config -> Connection -> Iso8601 . Duration -> [IdText ] -> IO (Doc AnsiStyle )
699+ Config -> Connection -> Iso . Duration -> [IdText ] -> IO (Doc AnsiStyle )
694700recurTasks conf connection duration ids = do
701+ let durationIsoText = decodeUtf8 $ Iso. formatDuration duration
702+
695703 docs <- forM ids $ \ idSubstr ->
696704 execWithTask conf connection idSubstr $ \ task -> do
697705 let
698706 taskUlid@ (TaskUlid idText) = primaryKey task
699707 prettyBody = dquotes (pretty $ Task. body task)
700708 prettyId = dquotes (pretty idText)
701- durationIsoText = decodeUtf8 $ Iso8601. formatDuration duration
702709
703710 groupUlid <- formatUlid getULID
704711
0 commit comments