|
27 | 27 | import qualified Cardano.Crypto as Crypto
|
28 | 28 | import Cardano.Db (DbWord64 (..))
|
29 | 29 | import qualified Cardano.Db as DB
|
30 |
| -import Cardano.DbSync.Api.Types (SyncEnv (..)) |
| 30 | +import Cardano.DbSync.Api.Types (SyncEnv (..), SyncOptions (..), ioShelley) |
31 | 31 | import Cardano.DbSync.Cache (queryOrInsertRewardAccount, queryPoolKeyOrInsert)
|
32 | 32 | import Cardano.DbSync.Cache.Types (CacheNew (..))
|
| 33 | +import Cardano.DbSync.Config.Types (ShelleyInsertConfig (..)) |
33 | 34 | import qualified Cardano.DbSync.Era.Shelley.Generic as Generic
|
34 | 35 | import Cardano.DbSync.Era.Shelley.Generic.ParamProposal
|
35 | 36 | import Cardano.DbSync.Era.Universal.Insert.Other (toDouble)
|
@@ -87,7 +88,7 @@ insertGovActionProposal syncEnv blkId txId govExpiresAt mmCommittee (index, pp)
|
87 | 88 | _ -> pure Nothing
|
88 | 89 | prevGovActionDBId <- case mprevGovAction of
|
89 | 90 | Nothing -> pure Nothing
|
90 |
| - Just prevGovActionId -> Just <$> resolveGovActionProposal prevGovActionId |
| 91 | + Just prevGovActionId -> resolveGovActionProposal syncEnv prevGovActionId |
91 | 92 | govActionProposalId <-
|
92 | 93 | lift $
|
93 | 94 | DB.insertGovActionProposal $
|
@@ -178,17 +179,25 @@ insertGovActionProposal syncEnv blkId txId govExpiresAt mmCommittee (index, pp)
|
178 | 179 | --------------------------------------------------------------------------------------
|
179 | 180 | resolveGovActionProposal ::
|
180 | 181 | MonadIO m =>
|
| 182 | + SyncEnv -> |
181 | 183 | GovActionId StandardCrypto ->
|
182 |
| - ExceptT SyncNodeError (ReaderT SqlBackend m) DB.GovActionProposalId |
183 |
| -resolveGovActionProposal gaId = do |
| 184 | + ExceptT SyncNodeError (ReaderT SqlBackend m) (Maybe DB.GovActionProposalId) |
| 185 | +resolveGovActionProposal syncEnv gaId = do |
184 | 186 | gaTxId <-
|
185 | 187 | liftLookupFail "resolveGovActionProposal.queryTxId" $
|
186 | 188 | DB.queryTxId $
|
187 | 189 | Generic.unTxHash $
|
188 | 190 | gaidTxId gaId
|
189 | 191 | let (GovActionIx index) = gaidGovActionIx gaId
|
190 |
| - liftLookupFail "resolveGovActionProposal.queryGovActionProposalId" $ |
191 |
| - DB.queryGovActionProposalId gaTxId (fromIntegral index) -- TODO: Use Word32? |
| 192 | + case ioShelley insertOpts of |
| 193 | + ShelleyStakeAddrs _ -> pure Nothing |
| 194 | + _ -> do |
| 195 | + result <- |
| 196 | + liftLookupFail "resolveGovActionProposal.queryGovActionProposalId" $ |
| 197 | + DB.queryGovActionProposalId gaTxId (fromIntegral index) -- TODO: Use Word32? |
| 198 | + pure $ Just result |
| 199 | + where |
| 200 | + insertOpts = soptInsertOptions $ envOptions syncEnv |
192 | 201 |
|
193 | 202 | insertParamProposal ::
|
194 | 203 | (MonadBaseControl IO m, MonadIO m) =>
|
@@ -287,32 +296,35 @@ insertVotingProcedure ::
|
287 | 296 | (Word16, (GovActionId StandardCrypto, VotingProcedure StandardConway)) ->
|
288 | 297 | ExceptT SyncNodeError (ReaderT SqlBackend m) ()
|
289 | 298 | insertVotingProcedure syncEnv txId voter (index, (gaId, vp)) = do
|
290 |
| - govActionId <- resolveGovActionProposal gaId |
291 |
| - votingAnchorId <- whenMaybe (strictMaybeToMaybe $ vProcAnchor vp) $ lift . insertVotingAnchor txId DB.OtherAnchor |
292 |
| - (mCommitteeVoterId, mDRepVoter, mStakePoolVoter) <- case voter of |
293 |
| - CommitteeVoter cred -> do |
294 |
| - khId <- lift $ insertCommitteeHash cred |
295 |
| - pure (Just khId, Nothing, Nothing) |
296 |
| - DRepVoter cred -> do |
297 |
| - drep <- lift $ insertCredDrepHash cred |
298 |
| - pure (Nothing, Just drep, Nothing) |
299 |
| - StakePoolVoter poolkh -> do |
300 |
| - poolHashId <- lift $ queryPoolKeyOrInsert "insertVotingProcedure" syncEnv (envCache syncEnv) CacheNew False poolkh |
301 |
| - pure (Nothing, Nothing, Just poolHashId) |
302 |
| - void |
303 |
| - . lift |
304 |
| - . DB.insertVotingProcedure |
305 |
| - $ DB.VotingProcedure |
306 |
| - { DB.votingProcedureTxId = txId |
307 |
| - , DB.votingProcedureIndex = index |
308 |
| - , DB.votingProcedureGovActionProposalId = govActionId |
309 |
| - , DB.votingProcedureCommitteeVoter = mCommitteeVoterId |
310 |
| - , DB.votingProcedureDrepVoter = mDRepVoter |
311 |
| - , DB.votingProcedurePoolVoter = mStakePoolVoter |
312 |
| - , DB.votingProcedureVoterRole = Generic.toVoterRole voter |
313 |
| - , DB.votingProcedureVote = Generic.toVote $ vProcVote vp |
314 |
| - , DB.votingProcedureVotingAnchorId = votingAnchorId |
315 |
| - } |
| 299 | + maybeGovActionId <- resolveGovActionProposal syncEnv gaId |
| 300 | + case maybeGovActionId of |
| 301 | + Nothing -> pure () |
| 302 | + Just govActionId -> do |
| 303 | + votingAnchorId <- whenMaybe (strictMaybeToMaybe $ vProcAnchor vp) $ lift . insertVotingAnchor txId DB.OtherAnchor |
| 304 | + (mCommitteeVoterId, mDRepVoter, mStakePoolVoter) <- case voter of |
| 305 | + CommitteeVoter cred -> do |
| 306 | + khId <- lift $ insertCommitteeHash cred |
| 307 | + pure (Just khId, Nothing, Nothing) |
| 308 | + DRepVoter cred -> do |
| 309 | + drep <- lift $ insertCredDrepHash cred |
| 310 | + pure (Nothing, Just drep, Nothing) |
| 311 | + StakePoolVoter poolkh -> do |
| 312 | + poolHashId <- lift $ queryPoolKeyOrInsert "insertVotingProcedure" syncEnv (envCache syncEnv) CacheNew False poolkh |
| 313 | + pure (Nothing, Nothing, Just poolHashId) |
| 314 | + void |
| 315 | + . lift |
| 316 | + . DB.insertVotingProcedure |
| 317 | + $ DB.VotingProcedure |
| 318 | + { DB.votingProcedureTxId = txId |
| 319 | + , DB.votingProcedureIndex = index |
| 320 | + , DB.votingProcedureGovActionProposalId = govActionId |
| 321 | + , DB.votingProcedureCommitteeVoter = mCommitteeVoterId |
| 322 | + , DB.votingProcedureDrepVoter = mDRepVoter |
| 323 | + , DB.votingProcedurePoolVoter = mStakePoolVoter |
| 324 | + , DB.votingProcedureVoterRole = Generic.toVoterRole voter |
| 325 | + , DB.votingProcedureVote = Generic.toVote $ vProcVote vp |
| 326 | + , DB.votingProcedureVotingAnchorId = votingAnchorId |
| 327 | + } |
316 | 328 |
|
317 | 329 | insertVotingAnchor :: (MonadIO m, MonadBaseControl IO m) => DB.TxId -> DB.AnchorType -> Anchor StandardCrypto -> ReaderT SqlBackend m DB.VotingAnchorId
|
318 | 330 | insertVotingAnchor txId anchorType anchor =
|
@@ -386,12 +398,22 @@ insertCostModel _blkId cms =
|
386 | 398 | , DB.costModelCosts = Text.decodeUtf8 $ LBS.toStrict $ Aeson.encode cms
|
387 | 399 | }
|
388 | 400 |
|
389 |
| -updateEnacted :: forall m. (MonadBaseControl IO m, MonadIO m) => Bool -> EpochNo -> EnactState StandardConway -> ExceptT SyncNodeError (ReaderT SqlBackend m) () |
390 |
| -updateEnacted isEnacted epochNo enactedState = do |
| 401 | +updateEnacted :: |
| 402 | + forall m. |
| 403 | + (MonadBaseControl IO m, MonadIO m) => |
| 404 | + SyncEnv -> |
| 405 | + Bool -> |
| 406 | + EpochNo -> |
| 407 | + EnactState StandardConway -> |
| 408 | + ExceptT SyncNodeError (ReaderT SqlBackend m) () |
| 409 | +updateEnacted syncEnv isEnacted epochNo enactedState = do |
391 | 410 | whenJust (strictMaybeToMaybe (enactedState ^. ensPrevPParamUpdateL)) $ \prevId -> do
|
392 |
| - gaId <- resolveGovActionProposal $ getPrevId prevId |
393 |
| - if isEnacted |
394 |
| - then lift $ DB.updateGovActionEnacted gaId (unEpochNo epochNo) |
395 |
| - else lift $ DB.updateGovActionRatified gaId (unEpochNo epochNo) |
| 411 | + maybeGaId <- resolveGovActionProposal syncEnv $ getPrevId prevId |
| 412 | + case maybeGaId of |
| 413 | + Nothing -> pure () |
| 414 | + Just gaId -> |
| 415 | + if isEnacted |
| 416 | + then lift $ DB.updateGovActionEnacted gaId (unEpochNo epochNo) |
| 417 | + else lift $ DB.updateGovActionRatified gaId (unEpochNo epochNo) |
396 | 418 | where
|
397 | 419 | getPrevId = unGovPurposeId
|
0 commit comments