module Hasql.Codecs.RequestingOid ( RequestingOid, toUnknownTypes, toBase, requestAndHandle, lift, hoist, lookup, lookingUp, hoistLookingUp, ) where import Data.HashMap.Strict qualified as HashMap import Hasql.Codecs.RequestingOid.LookingUp qualified as LookingUp import Hasql.Platform.Prelude hiding (lift, lookup) import PostgreSQL.Binary.Decoding qualified as Binary type RequestingOid = LookingUp.LookingUp (Maybe Text, Text) (Word32, Word32) toUnknownTypes :: RequestingOid a -> HashSet (Maybe Text, Text) toUnknownTypes :: forall a. RequestingOid a -> HashSet (Maybe Text, Text) toUnknownTypes (LookingUp.LookingUp [(Maybe Text, Text)] unknownTypes ((Maybe Text, Text) -> (Word32, Word32)) -> a _) = [Item (HashSet (Maybe Text, Text))] -> HashSet (Maybe Text, Text) forall l. IsList l => [Item l] -> l fromList [(Maybe Text, Text)] [Item (HashSet (Maybe Text, Text))] unknownTypes toBase :: RequestingOid a -> HashMap (Maybe Text, Text) (Word32, Word32) -> a toBase :: forall a. RequestingOid a -> HashMap (Maybe Text, Text) (Word32, Word32) -> a toBase (LookingUp.LookingUp [(Maybe Text, Text)] _unknownTypes ((Maybe Text, Text) -> (Word32, Word32)) -> a decoder) HashMap (Maybe Text, Text) (Word32, Word32) oidCache = ((Maybe Text, Text) -> (Word32, Word32)) -> a decoder \(Maybe Text, Text) key -> (Maybe Text, Text) -> HashMap (Maybe Text, Text) (Word32, Word32) -> Maybe (Word32, Word32) forall k v. Hashable k => k -> HashMap k v -> Maybe v HashMap.lookup (Maybe Text, Text) key HashMap (Maybe Text, Text) (Word32, Word32) oidCache Maybe (Word32, Word32) -> (Maybe (Word32, Word32) -> (Word32, Word32)) -> (Word32, Word32) forall a b. a -> (a -> b) -> b & (Word32, Word32) -> Maybe (Word32, Word32) -> (Word32, Word32) forall a. a -> Maybe a -> a fromMaybe (Word32 0, Word32 0) requestAndHandle :: [(Maybe Text, Text)] -> (((Maybe Text, Text) -> (Word32, Word32)) -> a) -> RequestingOid a requestAndHandle :: forall a. [(Maybe Text, Text)] -> (((Maybe Text, Text) -> (Word32, Word32)) -> a) -> RequestingOid a requestAndHandle [(Maybe Text, Text)] keys ((Maybe Text, Text) -> (Word32, Word32)) -> a fn = [(Maybe Text, Text)] -> (((Maybe Text, Text) -> (Word32, Word32)) -> a) -> LookingUp (Maybe Text, Text) (Word32, Word32) a forall k v a. [k] -> ((k -> v) -> a) -> LookingUp k v a LookingUp.LookingUp [(Maybe Text, Text)] keys ((Maybe Text, Text) -> (Word32, Word32)) -> a fn lift :: a -> RequestingOid a lift :: forall a. a -> RequestingOid a lift = a -> LookingUp (Maybe Text, Text) (Word32, Word32) a forall a k v. a -> LookingUp k v a LookingUp.lift hoist :: (a -> b) -> RequestingOid a -> RequestingOid b hoist :: forall a b. (a -> b) -> RequestingOid a -> RequestingOid b hoist a -> b fn (LookingUp.LookingUp [(Maybe Text, Text)] keys ((Maybe Text, Text) -> (Word32, Word32)) -> a use) = [(Maybe Text, Text)] -> (((Maybe Text, Text) -> (Word32, Word32)) -> b) -> LookingUp (Maybe Text, Text) (Word32, Word32) b forall k v a. [k] -> ((k -> v) -> a) -> LookingUp k v a LookingUp.LookingUp [(Maybe Text, Text)] keys (a -> b fn (a -> b) -> (((Maybe Text, Text) -> (Word32, Word32)) -> a) -> ((Maybe Text, Text) -> (Word32, Word32)) -> 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 . ((Maybe Text, Text) -> (Word32, Word32)) -> a use) lookup :: (Maybe Text, Text) -> RequestingOid (Word32, Word32) lookup :: (Maybe Text, Text) -> RequestingOid (Word32, Word32) lookup = (Maybe Text, Text) -> RequestingOid (Word32, Word32) forall k v. k -> LookingUp k v v LookingUp.lookup lookingUp :: (Maybe Text, Text) -> ((Word32, Word32) -> a) -> RequestingOid a lookingUp :: forall a. (Maybe Text, Text) -> ((Word32, Word32) -> a) -> RequestingOid a lookingUp = (Maybe Text, Text) -> ((Word32, Word32) -> a) -> LookingUp (Maybe Text, Text) (Word32, Word32) a forall k v a. k -> (v -> a) -> LookingUp k v a LookingUp.lookingUp hoistLookingUp :: (Maybe Text, Text) -> ((Word32, Word32) -> a -> b) -> RequestingOid a -> RequestingOid b hoistLookingUp :: forall a b. (Maybe Text, Text) -> ((Word32, Word32) -> a -> b) -> RequestingOid a -> RequestingOid b hoistLookingUp = (Maybe Text, Text) -> ((Word32, Word32) -> a -> b) -> LookingUp (Maybe Text, Text) (Word32, Word32) a -> LookingUp (Maybe Text, Text) (Word32, Word32) b forall k v a b. k -> (v -> a -> b) -> LookingUp k v a -> LookingUp k v b LookingUp.hoistLookingUp