@@ -2,26 +2,26 @@ module TurboHaskell.AuthSupport.Lockable where
22
33import ClassyPrelude
44import Control.Lens hiding ((|>) )
5- import Data.Generics.Product
6- import Data.Generics.Product.Types
75import TurboHaskell.ModelSupport
86import qualified Data.Time.Clock as Clock
97import Unsafe.Coerce
8+ import GHC.Records
9+ import TurboHaskell.HaskellSupport
1010
11- lock :: forall user modelContext . (? modelContext :: ModelContext , CanUpdate user , HasField " lockedAt" user user (Maybe UTCTime ) (Maybe UTCTime ), Generic user ) => user -> IO user
11+ lock :: forall user modelContext . (? modelContext :: ModelContext , CanUpdate user , UpdateField " lockedAt" user user (Maybe UTCTime ) (Maybe UTCTime )) => user -> IO user
1212lock user = do
1313 now <- getCurrentTime
14- let currentLockedAt :: Maybe UTCTime = user ^. field @ " lockedAt"
15- let user' :: user = user & field @ " lockedAt" .~ Just now
14+ let currentLockedAt :: Maybe UTCTime = getField @ " lockedAt" user
15+ let user' :: user = updateField @ " lockedAt" ( Just now) user
1616 updateRecord user'
1717
1818lockDuration :: Clock. NominalDiffTime
1919lockDuration = let timeInSecs = 60 * 60 in Clock. secondsToNominalDiffTime timeInSecs
2020
21- isLocked :: forall user . (HasField " lockedAt" user user ( Maybe UTCTime ) (Maybe UTCTime )) => user -> IO Bool
21+ isLocked :: forall user . (HasField " lockedAt" user (Maybe UTCTime )) => user -> IO Bool
2222isLocked user = do
2323 now <- Clock. getCurrentTime
24- let currentLockedAt :: Maybe UTCTime = user ^. field @ " lockedAt"
24+ let currentLockedAt :: Maybe UTCTime = getField @ " lockedAt" user
2525 return $! case currentLockedAt of
2626 Just lockedAt ->
2727 let diff = Clock. diffUTCTime now (unsafeCoerce lockedAt)
0 commit comments