{-| Module : Network.Nakadi.Lenses Description : Nakadi Client Library Lenses (Internal) Copyright : (c) Moritz Clasmeier 2017, 2018 License : BSD3 Maintainer : mtesseract@silverratio.net Stability : experimental Portability : POSIX This module implements lenses for the data types contained in this package. -} {-# OPTIONS_HADDOCK prune #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE FunctionalDependencies #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE TemplateHaskell #-} module Network.Nakadi.Internal.Lenses where import Network.Nakadi.Internal.Prelude import Control.Lens import Data.Text ( Text ) import Data.Time.Clock import Data.UUID ( UUID ) import Network.Nakadi.Internal.TH import Network.Nakadi.Internal.Types.Committer import Network.Nakadi.Internal.Types.Config import Network.Nakadi.Internal.Types.Service import Network.Nakadi.Internal.Types.Worker makeNakadiLenses ''Config makeNakadiLenses ''SubscriptionStatsConf makeNakadiLenses ''HttpBackend makeNakadiLenses ''Cursor makeNakadiLenses ''DataChangeEvent makeNakadiLenses ''DataChangeEventEnriched makeNakadiLenses ''BusinessEvent makeNakadiLenses ''BusinessEventEnriched makeNakadiLenses ''SubscriptionEventStreamBatch makeNakadiLenses ''EventMetadata makeNakadiLenses ''EventMetadataEnriched makeNakadiLenses ''Partition makeNakadiLenses ''PartitionStat makeNakadiLenses ''CursorDistanceQuery makeNakadiLenses ''CursorDistanceResult makeNakadiLenses ''Timestamp makeNakadiLenses ''SubscriptionEventStream makeNakadiLenses ''EventTypeSchema makeNakadiLenses ''EventType makeNakadiLenses ''EventTypeSchemasResponse makeNakadiLenses ''PaginationLink makeNakadiLenses ''PaginationLinks makeNakadiLenses ''SubscriptionStats makeNakadiLenses ''SubscriptionCursorCommit makeNakadiLenses ''SubscriptionCursor makeNakadiLenses ''CursorCommit makeNakadiLenses ''SubscriptionsListResponse makeNakadiLenses ''Subscription makeNakadiLenses ''WorkerConfig makeNakadiLenses ''Worker makeNakadiLenses ''WorkerRegistry makeNakadiLenses ''SubscriptionRequest makeNakadiLenses ''SubscriptionCursorWithCounter instance HasNakadiId StreamId Text where id f (StreamId a) = StreamId <$> f a instance HasNakadiId SubscriptionId UUID where id f (SubscriptionId a) = SubscriptionId <$> f a instance HasNakadiId EventId UUID where id f (EventId a) = EventId <$> f a class HasNakadiUTCTime s a where utcTime :: Lens' s a instance HasNakadiUTCTime Timestamp UTCTime where utcTime f (Timestamp t) = Timestamp <$> f t class HasNakadiSubscriptionCursor s where subscriptionCursor :: Getter s SubscriptionCursor instance HasNakadiSubscriptionCursor SubscriptionCursor where subscriptionCursor = identity instance HasNakadiSubscriptionCursor (SubscriptionEventStreamBatch a) where subscriptionCursor = cursor