@@ -2,26 +2,26 @@ module TurboHaskell.AuthSupport.Lockable where
2
2
3
3
import ClassyPrelude
4
4
import Control.Lens hiding ((|>) )
5
- import Data.Generics.Product
6
- import Data.Generics.Product.Types
7
5
import TurboHaskell.ModelSupport
8
6
import qualified Data.Time.Clock as Clock
9
7
import Unsafe.Coerce
8
+ import GHC.Records
9
+ import TurboHaskell.HaskellSupport
10
10
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
12
12
lock user = do
13
13
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
16
16
updateRecord user'
17
17
18
18
lockDuration :: Clock. NominalDiffTime
19
19
lockDuration = let timeInSecs = 60 * 60 in Clock. secondsToNominalDiffTime timeInSecs
20
20
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
22
22
isLocked user = do
23
23
now <- Clock. getCurrentTime
24
- let currentLockedAt :: Maybe UTCTime = user ^. field @ " lockedAt"
24
+ let currentLockedAt :: Maybe UTCTime = getField @ " lockedAt" user
25
25
return $! case currentLockedAt of
26
26
Just lockedAt ->
27
27
let diff = Clock. diffUTCTime now (unsafeCoerce lockedAt)
0 commit comments