module Hasql.Codecs.RequestingOid ( RequestingOid, toUnknownTypes, toBase, requestAndHandle, lift, hoist, lookup, lookingUp, hoistLookingUp, ) where import Hasql.Codecs.RequestingOid.LookingUp qualified as LookingUp import Hasql.Codecs.Vocab qualified as Vocab import Hasql.Codecs.Vocab.OidCache qualified as Vocab.OidCache import Hasql.Codecs.Vocab.TypeInfo qualified as Vocab.TypeInfo import Hasql.Platform.Prelude hiding (lift, lookup) type RequestingOid = LookingUp.LookingUp Vocab.QualifiedTypeName Vocab.TypeInfo.TypeInfo {-# INLINE toUnknownTypes #-} toUnknownTypes :: RequestingOid a -> HashSet Vocab.QualifiedTypeName toUnknownTypes :: forall a. RequestingOid a -> HashSet QualifiedTypeName toUnknownTypes (LookingUp.LookingUp [QualifiedTypeName] unknownTypes (QualifiedTypeName -> TypeInfo) -> a _) = [Item (HashSet QualifiedTypeName)] -> HashSet QualifiedTypeName forall l. IsList l => [Item l] -> l fromList [Item (HashSet QualifiedTypeName)] [QualifiedTypeName] unknownTypes {-# INLINE toBase #-} toBase :: RequestingOid a -> Vocab.OidCache -> a toBase :: forall a. RequestingOid a -> OidCache -> a toBase (LookingUp.LookingUp [QualifiedTypeName] _unknownTypes (QualifiedTypeName -> TypeInfo) -> a decoder) OidCache oidCache = (QualifiedTypeName -> TypeInfo) -> a decoder \QualifiedTypeName key -> QualifiedTypeName -> OidCache -> Maybe TypeInfo Vocab.OidCache.lookupTypeInfo QualifiedTypeName key OidCache oidCache Maybe TypeInfo -> (Maybe TypeInfo -> TypeInfo) -> TypeInfo forall a b. a -> (a -> b) -> b & TypeInfo -> Maybe TypeInfo -> TypeInfo forall a. a -> Maybe a -> a fromMaybe (Word32 -> Word32 -> TypeInfo Vocab.TypeInfo.TypeInfo Word32 0 Word32 0) {-# INLINE requestAndHandle #-} requestAndHandle :: [Vocab.QualifiedTypeName] -> ((Vocab.QualifiedTypeName -> Vocab.TypeInfo.TypeInfo) -> a) -> RequestingOid a requestAndHandle :: forall a. [QualifiedTypeName] -> ((QualifiedTypeName -> TypeInfo) -> a) -> RequestingOid a requestAndHandle [QualifiedTypeName] keys (QualifiedTypeName -> TypeInfo) -> a fn = [QualifiedTypeName] -> ((QualifiedTypeName -> TypeInfo) -> a) -> LookingUp QualifiedTypeName TypeInfo a forall k v a. [k] -> ((k -> v) -> a) -> LookingUp k v a LookingUp.LookingUp [QualifiedTypeName] keys (QualifiedTypeName -> TypeInfo) -> a fn {-# INLINE lift #-} lift :: a -> RequestingOid a lift :: forall a. a -> RequestingOid a lift = a -> LookingUp QualifiedTypeName TypeInfo a forall a k v. a -> LookingUp k v a LookingUp.lift {-# INLINE hoist #-} hoist :: (a -> b) -> RequestingOid a -> RequestingOid b hoist :: forall a b. (a -> b) -> RequestingOid a -> RequestingOid b hoist a -> b fn (LookingUp.LookingUp [QualifiedTypeName] keys (QualifiedTypeName -> TypeInfo) -> a use) = [QualifiedTypeName] -> ((QualifiedTypeName -> TypeInfo) -> b) -> LookingUp QualifiedTypeName TypeInfo b forall k v a. [k] -> ((k -> v) -> a) -> LookingUp k v a LookingUp.LookingUp [QualifiedTypeName] keys (a -> b fn (a -> b) -> ((QualifiedTypeName -> TypeInfo) -> a) -> (QualifiedTypeName -> TypeInfo) -> b forall b c a. (b -> c) -> (a -> b) -> a -> c forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k). Category cat => cat b c -> cat a b -> cat a c . (QualifiedTypeName -> TypeInfo) -> a use) {-# INLINE lookup #-} lookup :: Vocab.QualifiedTypeName -> RequestingOid Vocab.TypeInfo.TypeInfo lookup :: QualifiedTypeName -> RequestingOid TypeInfo lookup = QualifiedTypeName -> RequestingOid TypeInfo forall k v. k -> LookingUp k v v LookingUp.lookup {-# INLINE lookingUp #-} lookingUp :: Vocab.QualifiedTypeName -> (Vocab.TypeInfo.TypeInfo -> a) -> RequestingOid a lookingUp :: forall a. QualifiedTypeName -> (TypeInfo -> a) -> RequestingOid a lookingUp = QualifiedTypeName -> (TypeInfo -> a) -> LookingUp QualifiedTypeName TypeInfo a forall k v a. k -> (v -> a) -> LookingUp k v a LookingUp.lookingUp {-# INLINE hoistLookingUp #-} hoistLookingUp :: Vocab.QualifiedTypeName -> (Vocab.TypeInfo.TypeInfo -> a -> b) -> RequestingOid a -> RequestingOid b hoistLookingUp :: forall a b. QualifiedTypeName -> (TypeInfo -> a -> b) -> RequestingOid a -> RequestingOid b hoistLookingUp = QualifiedTypeName -> (TypeInfo -> a -> b) -> LookingUp QualifiedTypeName TypeInfo a -> LookingUp QualifiedTypeName TypeInfo b forall k v a b. k -> (v -> a -> b) -> LookingUp k v a -> LookingUp k v b LookingUp.hoistLookingUp