summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Omni/Task/Core.hs17
-rw-r--r--debug_ns.hs17
2 files changed, 11 insertions, 23 deletions
diff --git a/Omni/Task/Core.hs b/Omni/Task/Core.hs
index 54ed04d..525ceb4 100644
--- a/Omni/Task/Core.hs
+++ b/Omni/Task/Core.hs
@@ -13,7 +13,8 @@ import qualified Data.ByteString.Lazy.Char8 as BLC
import qualified Data.List as List
import qualified Data.Text as T
import qualified Data.Text.IO as TIO
-import Data.Time (UTCTime, diffTimeToPicoseconds, getCurrentTime, utctDayTime)
+import Data.Time (UTCTime, diffTimeToPicoseconds, getCurrentTime, utctDayTime, utctDay)
+import Data.Time.Calendar (toModifiedJulianDay)
import GHC.Generics ()
import System.Directory (createDirectoryIfMissing, doesFileExist)
import System.Environment (lookupEnv)
@@ -104,11 +105,15 @@ initTaskDb = do
generateId :: IO Text
generateId = do
now <- getCurrentTime
- -- Convert current time to microseconds since midnight
- let dayTime = utctDayTime now
- microseconds = diffTimeToPicoseconds dayTime `div` 1000000
- -- Convert to base62 for shorter IDs
- encoded = toBase62 (fromIntegral microseconds)
+ -- Convert current time to microseconds since epoch (using MJD)
+ let day = utctDay now
+ dayTime = utctDayTime now
+ mjd = toModifiedJulianDay day
+ micros = diffTimeToPicoseconds dayTime `div` 1000000
+ -- Combine MJD and micros to ensure uniqueness across days.
+ -- Multiplier 10^11 (100,000 seconds) is safe for any day length.
+ totalMicros = (mjd * 100000000000) + micros
+ encoded = toBase62 totalMicros
pure <| "t-" <> T.pack encoded
-- Generate a child ID based on parent ID (e.g. "t-abc.1", "t-abc.1.2")
diff --git a/debug_ns.hs b/debug_ns.hs
deleted file mode 100644
index fbd4ea3..0000000
--- a/debug_ns.hs
+++ /dev/null
@@ -1,17 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE NoImplicitPrelude #-}
-
-module Main where
-
-import Omni.Namespace
-import Protolude
-import qualified Data.Text as T
-
-main :: IO ()
-main = do
- let root = "/home/ben/omni-worker-1"
- let path = "/home/ben/omni-worker-1/Omni/Task.hs"
- putStrLn $ "Root: " ++ root
- putStrLn $ "Path: " ++ path
- let res = fromPath root path
- print res