Skip to content

Commit 7636fbf

Browse files
committed
updated lockable module
1 parent 0801641 commit 7636fbf

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

TurboHaskell/AuthSupport/Lockable.hs

+7-7
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,26 @@ module TurboHaskell.AuthSupport.Lockable where
22

33
import ClassyPrelude
44
import Control.Lens hiding ((|>))
5-
import Data.Generics.Product
6-
import Data.Generics.Product.Types
75
import TurboHaskell.ModelSupport
86
import qualified Data.Time.Clock as Clock
97
import 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
1212
lock 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

1818
lockDuration :: Clock.NominalDiffTime
1919
lockDuration = 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
2222
isLocked 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

Comments
 (0)