11{-# LANGUAGE GADTs #-}
22{-# LANGUAGE ScopedTypeVariables #-}
3- {-# LANGUAGE NoImplicitPrelude #-}
43
54module Cardano.DbSync.Api.Types (
65 SyncEnv (.. ),
@@ -10,34 +9,39 @@ module Cardano.DbSync.Api.Types (
109 RunMigration ,
1110 ConsistentLevel (.. ),
1211 CurrentEpochNo (.. ),
12+ Prefetch (.. ),
13+ PrefetchTxId (.. ),
14+ newPrefetch ,
1315) where
1416
1517import qualified Cardano.Db as DB
1618import Cardano.DbSync.Cache.Types (CacheStatus , StakeChannels )
1719import Cardano.DbSync.Config.Types (SyncNodeConfig )
20+ import qualified Cardano.DbSync.Era.Shelley.Generic.Tx.Types as Generic
1821import Cardano.DbSync.Ledger.Types (HasLedgerEnv )
1922import Cardano.DbSync.LocalStateQuery (NoLedgerEnv )
2023import Cardano.DbSync.Types (
24+ CardanoBlock ,
2125 OffChainPoolResult ,
2226 OffChainPoolWorkQueue ,
2327 OffChainVoteResult ,
2428 OffChainVoteWorkQueue ,
2529 )
26- import Cardano.Prelude (Bool , Eq , IO , Show , Word64 )
2730import Cardano.Slotting.Slot (EpochNo (.. ))
28- import Control.Concurrent.Class.MonadSTM.Strict (
29- StrictTVar ,
30- )
31+ import Control.Concurrent.Class.MonadSTM.Strict (StrictTVar , newTBQueueIO , newTVarIO )
3132import Control.Concurrent.Class.MonadSTM.Strict.TBQueue (StrictTBQueue )
33+ import Data.Map (Map )
3234import qualified Data.Strict.Maybe as Strict
3335import Data.Time.Clock (UTCTime )
36+ import Data.Word (Word64 )
3437import Database.Persist.Postgresql (ConnectionString )
3538import Database.Persist.Sql (SqlBackend )
3639import Ouroboros.Consensus.BlockchainTime.WallClock.Types (SystemStart (.. ))
3740import Ouroboros.Network.Magic (NetworkMagic (.. ))
3841
3942data SyncEnv = SyncEnv
4043 { envBackend :: ! SqlBackend
44+ , envPrefetch :: ! Prefetch
4145 , envCache :: ! CacheStatus
4246 , envConnectionString :: ! ConnectionString
4347 , envConsistentLevel :: ! (StrictTVar IO ConsistentLevel )
@@ -101,3 +105,16 @@ data ConsistentLevel = Consistent | DBAheadOfLedger | Unchecked
101105newtype CurrentEpochNo = CurrentEpochNo
102106 { cenEpochNo :: Strict. Maybe EpochNo
103107 }
108+
109+ data PrefetchTxId = PrefetchTxIdBlock CardanoBlock | PrefetchTxIdBlocks [CardanoBlock ]
110+
111+ data Prefetch = Prefetch
112+ { pTxInQueue :: StrictTBQueue IO PrefetchTxId
113+ , pTxIn :: StrictTVar IO (Map Generic. TxInKey (Maybe (DB. TxId , Either Generic. TxInKey DB. TxOutIdW , Maybe DB. DbLovelace )))
114+ }
115+
116+ newPrefetch :: IO Prefetch
117+ newPrefetch =
118+ Prefetch
119+ <$> newTBQueueIO 1000
120+ <*> newTVarIO mempty
0 commit comments