|
30 | 30 | import qualified Cardano.Crypto as Crypto
|
31 | 31 | import Cardano.Db (DbWord64 (..))
|
32 | 32 | import qualified Cardano.Db as DB
|
33 |
| -import Cardano.DbSync.Api.Types (SyncEnv (..)) |
| 33 | +import Cardano.DbSync.Api.Types (InsertOptions (..), SyncEnv (..), SyncOptions (..)) |
34 | 34 | import Cardano.DbSync.Cache (queryOrInsertRewardAccount, queryPoolKeyOrInsert)
|
35 | 35 | import Cardano.DbSync.Cache.Types (CacheNew (..))
|
| 36 | +import Cardano.DbSync.Config.Types (ShelleyInsertConfig (..)) |
36 | 37 | import qualified Cardano.DbSync.Era.Shelley.Generic as Generic
|
37 | 38 | import Cardano.DbSync.Era.Shelley.Generic.ParamProposal
|
38 | 39 | import Cardano.DbSync.Era.Universal.Insert.Other (toDouble)
|
@@ -89,7 +90,7 @@ insertGovActionProposal syncEnv blkId txId govExpiresAt mmCommittee (index, pp)
|
89 | 90 | _ -> pure Nothing
|
90 | 91 | prevGovActionDBId <- case mprevGovAction of
|
91 | 92 | Nothing -> pure Nothing
|
92 |
| - Just prevGovActionId -> Just <$> resolveGovActionProposal prevGovActionId |
| 93 | + Just prevGovActionId -> resolveGovActionProposal syncEnv prevGovActionId |
93 | 94 | govActionProposalId <-
|
94 | 95 | lift $
|
95 | 96 | DB.insertGovActionProposal $
|
@@ -180,17 +181,26 @@ insertGovActionProposal syncEnv blkId txId govExpiresAt mmCommittee (index, pp)
|
180 | 181 | --------------------------------------------------------------------------------------
|
181 | 182 | resolveGovActionProposal ::
|
182 | 183 | MonadIO m =>
|
| 184 | + SyncEnv -> |
183 | 185 | GovActionId StandardCrypto ->
|
184 |
| - ExceptT SyncNodeError (ReaderT SqlBackend m) DB.GovActionProposalId |
185 |
| -resolveGovActionProposal gaId = do |
| 186 | + ExceptT SyncNodeError (ReaderT SqlBackend m) (Maybe DB.GovActionProposalId) |
| 187 | +resolveGovActionProposal syncEnv gaId = do |
186 | 188 | gaTxId <-
|
187 | 189 | liftLookupFail "resolveGovActionProposal.queryTxId" $
|
188 | 190 | DB.queryTxId $
|
189 | 191 | Generic.unTxHash $
|
190 | 192 | gaidTxId gaId
|
191 | 193 | let (GovActionIx index) = gaidGovActionIx gaId
|
192 |
| - liftLookupFail "resolveGovActionProposal.queryGovActionProposalId" $ |
193 |
| - DB.queryGovActionProposalId gaTxId (fromIntegral index) -- TODO: Use Word32? |
| 194 | + case ioShelley insertOpts of |
| 195 | + -- if we have whitelist for stake addresses then don't input the proposal |
| 196 | + ShelleyStakeAddrs _ -> pure Nothing |
| 197 | + _ -> do |
| 198 | + result <- |
| 199 | + liftLookupFail "resolveGovActionProposal.queryGovActionProposalId" $ |
| 200 | + DB.queryGovActionProposalId gaTxId (fromIntegral index) -- TODO: Use Word32? |
| 201 | + pure $ Just result |
| 202 | + where |
| 203 | + insertOpts = soptInsertOptions $ envOptions syncEnv |
194 | 204 |
|
195 | 205 | insertParamProposal ::
|
196 | 206 | (MonadBaseControl IO m, MonadIO m) =>
|
@@ -290,32 +300,35 @@ insertVotingProcedure ::
|
290 | 300 | (Word16, (GovActionId StandardCrypto, VotingProcedure StandardConway)) ->
|
291 | 301 | ExceptT SyncNodeError (ReaderT SqlBackend m) ()
|
292 | 302 | insertVotingProcedure syncEnv txId voter (index, (gaId, vp)) = do
|
293 |
| - govActionId <- resolveGovActionProposal gaId |
294 |
| - votingAnchorId <- whenMaybe (strictMaybeToMaybe $ vProcAnchor vp) $ lift . insertVotingAnchor txId DB.OtherAnchor |
295 |
| - (mCommitteeVoterId, mDRepVoter, mStakePoolVoter) <- case voter of |
296 |
| - CommitteeVoter cred -> do |
297 |
| - khId <- lift $ insertCommitteeHash cred |
298 |
| - pure (Just khId, Nothing, Nothing) |
299 |
| - DRepVoter cred -> do |
300 |
| - drep <- lift $ insertCredDrepHash cred |
301 |
| - pure (Nothing, Just drep, Nothing) |
302 |
| - StakePoolVoter poolkh -> do |
303 |
| - poolHashId <- lift $ queryPoolKeyOrInsert "insertVotingProcedure" syncEnv (envCache syncEnv) CacheNew False poolkh |
304 |
| - pure (Nothing, Nothing, Just poolHashId) |
305 |
| - void |
306 |
| - . lift |
307 |
| - . DB.insertVotingProcedure |
308 |
| - $ DB.VotingProcedure |
309 |
| - { DB.votingProcedureTxId = txId |
310 |
| - , DB.votingProcedureIndex = index |
311 |
| - , DB.votingProcedureGovActionProposalId = govActionId |
312 |
| - , DB.votingProcedureCommitteeVoter = mCommitteeVoterId |
313 |
| - , DB.votingProcedureDrepVoter = mDRepVoter |
314 |
| - , DB.votingProcedurePoolVoter = mStakePoolVoter |
315 |
| - , DB.votingProcedureVoterRole = Generic.toVoterRole voter |
316 |
| - , DB.votingProcedureVote = Generic.toVote $ vProcVote vp |
317 |
| - , DB.votingProcedureVotingAnchorId = votingAnchorId |
318 |
| - } |
| 303 | + maybeGovActionId <- resolveGovActionProposal syncEnv gaId |
| 304 | + case maybeGovActionId of |
| 305 | + Nothing -> pure () |
| 306 | + Just govActionId -> do |
| 307 | + votingAnchorId <- whenMaybe (strictMaybeToMaybe $ vProcAnchor vp) $ lift . insertVotingAnchor txId DB.OtherAnchor |
| 308 | + (mCommitteeVoterId, mDRepVoter, mStakePoolVoter) <- case voter of |
| 309 | + CommitteeVoter cred -> do |
| 310 | + khId <- lift $ insertCommitteeHash cred |
| 311 | + pure (Just khId, Nothing, Nothing) |
| 312 | + DRepVoter cred -> do |
| 313 | + drep <- lift $ insertCredDrepHash cred |
| 314 | + pure (Nothing, Just drep, Nothing) |
| 315 | + StakePoolVoter poolkh -> do |
| 316 | + poolHashId <- lift $ queryPoolKeyOrInsert "insertVotingProcedure" syncEnv (envCache syncEnv) CacheNew False poolkh |
| 317 | + pure (Nothing, Nothing, Just poolHashId) |
| 318 | + void |
| 319 | + . lift |
| 320 | + . DB.insertVotingProcedure |
| 321 | + $ DB.VotingProcedure |
| 322 | + { DB.votingProcedureTxId = txId |
| 323 | + , DB.votingProcedureIndex = index |
| 324 | + , DB.votingProcedureGovActionProposalId = govActionId |
| 325 | + , DB.votingProcedureCommitteeVoter = mCommitteeVoterId |
| 326 | + , DB.votingProcedureDrepVoter = mDRepVoter |
| 327 | + , DB.votingProcedurePoolVoter = mStakePoolVoter |
| 328 | + , DB.votingProcedureVoterRole = Generic.toVoterRole voter |
| 329 | + , DB.votingProcedureVote = Generic.toVote $ vProcVote vp |
| 330 | + , DB.votingProcedureVotingAnchorId = votingAnchorId |
| 331 | + } |
319 | 332 |
|
320 | 333 | insertVotingAnchor :: (MonadIO m, MonadBaseControl IO m) => DB.TxId -> DB.AnchorType -> Anchor StandardCrypto -> ReaderT SqlBackend m DB.VotingAnchorId
|
321 | 334 | insertVotingAnchor txId anchorType anchor =
|
@@ -430,19 +443,25 @@ updateEnacted ::
|
430 | 443 | ExceptT SyncNodeError (ReaderT SqlBackend m) ()
|
431 | 444 | updateEnacted epochNo enactedState = do
|
432 | 445 | whenJust (strictMaybeToMaybe (grPParamUpdate enactedState)) $ \prevId -> do
|
433 |
| - gaId <- resolveGovActionProposal $ getPrevId prevId |
434 |
| - lift $ DB.updateGovActionEnacted gaId (unEpochNo epochNo) |
| 446 | + mGaId <- resolveGovActionProposal syncEnv $ getPrevId prevId |
| 447 | + case maybeGaId of |
| 448 | + Nothing -> pure () |
| 449 | + Just gaId -> lift $ DB.updateGovActionEnacted gaId (unEpochNo epochNo) |
435 | 450 |
|
436 | 451 | whenJust (strictMaybeToMaybe (grHardFork enactedState)) $ \prevId -> do
|
437 |
| - gaId <- resolveGovActionProposal $ getPrevId prevId |
438 |
| - lift $ DB.updateGovActionEnacted gaId (unEpochNo epochNo) |
| 452 | + mGaId <- resolveGovActionProposal syncEnv $ getPrevId prevId |
| 453 | + case maybeGaId of |
| 454 | + Nothing -> pure () |
| 455 | + Just gaId -> lift $ DB.updateGovActionEnacted gaId (unEpochNo epochNo) |
439 | 456 |
|
440 | 457 | whenJust (strictMaybeToMaybe (grCommittee enactedState)) $ \prevId -> do
|
441 |
| - gaId <- resolveGovActionProposal $ getPrevId prevId |
442 |
| - lift $ DB.updateGovActionEnacted gaId (unEpochNo epochNo) |
| 458 | + mGaId <- resolveGovActionProposal syncEnv $ getPrevId prevId |
| 459 | + case maybeGaId of |
| 460 | + Nothing -> pure () |
| 461 | + Just gaId -> lift $ DB.updateGovActionEnacted gaId (unEpochNo epochNo) |
443 | 462 |
|
444 | 463 | whenJust (strictMaybeToMaybe (grConstitution enactedState)) $ \prevId -> do
|
445 |
| - gaId <- resolveGovActionProposal $ getPrevId prevId |
446 |
| - lift $ DB.updateGovActionEnacted gaId (unEpochNo epochNo) |
447 |
| - where |
448 |
| - getPrevId = unGovPurposeId |
| 464 | + mGaId <- resolveGovActionProposal syncEnv $ getPrevId prevId |
| 465 | + case maybeGaId of |
| 466 | + Nothing -> pure () |
| 467 | + Just gaId -> lift $ DB.updateGovActionEnacted gaId (unEpochNo epochNo) |
0 commit comments