-- | Sorting instance for HasClient {-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} module Blockfrost.Client.Sorting ( SortOrder (..) , asc , desc ) where import Data.Proxy (Proxy (..)) import Servant.API ((:>)) import Servant.Client.Core (Client, HasClient (..)) import Blockfrost.Util.Sorting ( SortOrder (..) , Sorting , SortingExpanded , asc , desc ) instance HasClient m subApi => HasClient m (Sorting :> subApi) where type Client m (Sorting :> subApi) = SortOrder -> Client m subApi clientWithRoute pm _ req sOrder = clientWithRoute pm (Proxy @(SortingExpanded subApi)) req (Just sOrder) hoistClientMonad pm _ hst subCli = hoistClientMonad pm (Proxy @subApi) hst . subCli