1
1
{-# LANGUAGE FlexibleContexts #-}
2
+ {-# LANGUAGE RankNTypes #-}
2
3
{-# LANGUAGE TypeApplications #-}
3
4
4
5
module Cardano.Mock.Query (
@@ -11,11 +12,24 @@ module Cardano.Mock.Query (
11
12
queryGovActionCounts ,
12
13
queryConstitutionAnchor ,
13
14
queryRewardRests ,
15
+ queryCollateralTxOutCount ,
16
+ queryMultiAssetMetadataPolicy ,
17
+ queryPoolUpdateCount ,
18
+ queryStakeAddressCount ,
19
+ queryStakeAddressHashRaw ,
20
+ queryStakeDeRegCount ,
21
+ queryStakeRegCount ,
14
22
queryTreasuryDonations ,
23
+ countTxOutNonNullStakeAddrIds ,
15
24
) where
16
25
26
+ import Cardano.Db (TxOutTableType (.. ))
17
27
import qualified Cardano.Db as Db
18
- import Cardano.Prelude hiding (from , on )
28
+ import qualified Cardano.Db.Schema.Core.TxOut as C
29
+ import qualified Cardano.Db.Schema.Variant.TxOut as V
30
+ import Cardano.Prelude hiding (from , isNothing , on )
31
+ import qualified Data.ByteString.Base16 as Base16
32
+ import Data.ByteString.Short (ShortByteString , toShort )
19
33
import Database.Esqueleto.Experimental
20
34
import Prelude ()
21
35
@@ -162,3 +176,81 @@ queryTreasuryDonations = do
162
176
163
177
let total = join (unValue <$> res)
164
178
pure $ maybe 0 Db. unDbLovelace total
179
+
180
+ queryMultiAssetMetadataPolicy :: MonadIO io => ReaderT SqlBackend io (Maybe ShortByteString )
181
+ queryMultiAssetMetadataPolicy = do
182
+ res <- selectOne $ do
183
+ metadataPolicy <- from $ table @ Db. MultiAsset
184
+ pure $ metadataPolicy ^. Db. MultiAssetPolicy
185
+ pure $ toShort . Base16. encode . unValue <$> res
186
+
187
+ queryStakeAddressHashRaw :: MonadIO io => ReaderT SqlBackend io (Maybe ShortByteString )
188
+ queryStakeAddressHashRaw = do
189
+ res <- selectOne $ do
190
+ stakeAddress <- from $ table @ Db. StakeAddress
191
+ pure $ stakeAddress ^. Db. StakeAddressHashRaw
192
+ pure $ toShort . Base16. encode . unValue <$> res
193
+
194
+ queryStakeAddressCount :: MonadIO io => ReaderT SqlBackend io Word
195
+ queryStakeAddressCount = do
196
+ res <- selectOne $ do
197
+ _ <- from (table @ Db. StakeAddress )
198
+ pure countRows
199
+ pure $ maybe 0 unValue res
200
+
201
+ queryCollateralTxOutCount :: MonadIO io => ReaderT SqlBackend io Word
202
+ queryCollateralTxOutCount = do
203
+ res <- selectOne $ do
204
+ _ <- from (table @ Db. CollateralTxOut )
205
+ pure countRows
206
+ pure $ maybe 0 unValue res
207
+
208
+ queryPoolUpdateCount :: MonadIO io => ReaderT SqlBackend io Word
209
+ queryPoolUpdateCount = do
210
+ res <- selectOne $ do
211
+ _ <- from (table @ Db. PoolUpdate )
212
+ pure countRows
213
+ pure $ maybe 0 unValue res
214
+
215
+ queryStakeDeRegCount :: MonadIO io => ReaderT SqlBackend io Word
216
+ queryStakeDeRegCount = do
217
+ res <- selectOne $ do
218
+ _ <- from (table @ Db. StakeDeregistration )
219
+ pure countRows
220
+ pure $ maybe 0 unValue res
221
+
222
+ queryStakeRegCount :: MonadIO io => ReaderT SqlBackend io Word
223
+ queryStakeRegCount = do
224
+ res <- selectOne $ do
225
+ _ <- from (table @ Db. StakeRegistration )
226
+ pure countRows
227
+ pure $ maybe 0 unValue res
228
+
229
+ countTxOutNonNullStakeAddrIds ::
230
+ MonadIO m =>
231
+ TxOutTableType ->
232
+ ReaderT SqlBackend m Word
233
+ countTxOutNonNullStakeAddrIds txOutTableType = do
234
+ case txOutTableType of
235
+ TxOutCore -> queryCore
236
+ TxOutVariantAddress -> queryVariant
237
+ where
238
+ queryCore ::
239
+ MonadIO m =>
240
+ ReaderT SqlBackend m Word
241
+ queryCore = do
242
+ result <- selectOne $ do
243
+ txOut <- from $ table @ C. TxOut
244
+ where_ $ not_ (isNothing $ txOut ^. C. TxOutStakeAddressId )
245
+ pure countRows
246
+ pure $ maybe 0 unValue result
247
+
248
+ queryVariant ::
249
+ MonadIO m =>
250
+ ReaderT SqlBackend m Word
251
+ queryVariant = do
252
+ result <- selectOne $ do
253
+ txOut <- from $ table @ V. Address
254
+ where_ $ not_ (isNothing $ txOut ^. V. AddressStakeAddressId )
255
+ pure countRows
256
+ pure $ maybe 0 unValue result
0 commit comments