Skip to content

Commit 55c436a

Browse files
committed
Insert rest offchain data tables
1 parent c7cb138 commit 55c436a

File tree

3 files changed

+32
-11
lines changed

3 files changed

+32
-11
lines changed

cardano-db-sync/src/Cardano/DbSync/OffChain.hs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import Control.Concurrent.Class.MonadSTM.Strict (
3333
isEmptyTBQueue,
3434
writeTBQueue,
3535
)
36+
import Control.Monad.Extra (whenJust)
3637
import Control.Monad.Trans.Control (MonadBaseControl)
3738
import Data.Time.Clock.POSIX (POSIXTime)
3839
import qualified Data.Time.Clock.POSIX as Time
@@ -139,9 +140,12 @@ insertOffChainVoteResults trce resultQueue = do
139140
where
140141
insert :: (MonadBaseControl IO m, MonadIO m) => OffChainVoteResult -> ReaderT SqlBackend m ()
141142
insert = \case
142-
OffChainVoteResultMetadata md _ _ _ -> do
143-
_ocvdId <- DB.insertOffChainVoteData md
144-
pure ()
143+
OffChainVoteResultMetadata md accessors -> do
144+
mocvdId <- DB.insertOffChainVoteData md
145+
whenJust mocvdId $ \ocvdId -> do
146+
DB.insertOffChainVoteAuthors $ offChainVoteAuthors accessors ocvdId
147+
DB.insertOffChainVoteReference $ offChainVoteReferences accessors ocvdId
148+
DB.insertOffChainVoteExternalUpdate $ offChainVoteExternalUpdates accessors ocvdId
145149
OffChainVoteResultError fe -> void $ DB.insertOffChainVoteFetchError fe
146150

147151
isFetchError :: OffChainVoteResult -> Bool
@@ -285,7 +289,7 @@ fetchOffChainVoteData _tracer manager time oVoteWorkQ =
285289
referencesF ocvdId = map (mkReference ocvdId) $ mListToList $ Vote.references minimalBody
286290
externalUpdatesF ocvdId = map (mkexternalUpdates ocvdId) $ mListToList $ Vote.externalUpdates minimalBody
287291
in
288-
OffChainVoteResultMetadata vdt authorsF referencesF externalUpdatesF
292+
OffChainVoteResultMetadata vdt (OffChainVoteAccessors authorsF referencesF externalUpdatesF)
289293
Left err ->
290294
OffChainVoteResultError $
291295
DB.OffChainVoteFetchError

cardano-db-sync/src/Cardano/DbSync/Types.hs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ module Cardano.DbSync.Types (
1414
EpochSlot (..),
1515
OffChainPoolResult (..),
1616
OffChainVoteResult (..),
17+
OffChainVoteAccessors (..),
1718
OffChainUrlType (..),
1819
OffChainFetchError (..),
1920
SlotDetails (..),
@@ -144,13 +145,15 @@ data OffChainPoolResult
144145
| OffChainPoolResultError !OffChainPoolFetchError
145146

146147
data OffChainVoteResult
147-
= OffChainVoteResultMetadata
148-
!OffChainVoteData
149-
(DB.OffChainVoteDataId -> [OffChainVoteAuthor])
150-
(DB.OffChainVoteDataId -> [OffChainVoteReference])
151-
(DB.OffChainVoteDataId -> [OffChainVoteExternalUpdate])
148+
= OffChainVoteResultMetadata !OffChainVoteData !OffChainVoteAccessors
152149
| OffChainVoteResultError !OffChainVoteFetchError
153150

151+
data OffChainVoteAccessors = OffChainVoteAccessors
152+
{ offChainVoteAuthors :: DB.OffChainVoteDataId -> [OffChainVoteAuthor]
153+
, offChainVoteReferences :: DB.OffChainVoteDataId -> [OffChainVoteReference]
154+
, offChainVoteExternalUpdates :: DB.OffChainVoteDataId -> [OffChainVoteExternalUpdate]
155+
}
156+
154157
data OffChainPoolWorkQueue = OffChainPoolWorkQueue
155158
{ oPoolWqHashId :: !PoolHashId
156159
, oPoolWqReferenceId :: !PoolMetadataRefId

cardano-db/src/Cardano/Db/Insert.hs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ module Cardano.Db.Insert (
5656
insertCheckOffChainPoolData,
5757
insertCheckOffChainPoolFetchError,
5858
insertOffChainVoteData,
59+
insertOffChainVoteAuthors,
60+
insertOffChainVoteReference,
61+
insertOffChainVoteExternalUpdate,
5962
insertOffChainVoteFetchError,
6063
insertReservedPoolTicker,
6164
insertDelistedPool,
@@ -326,10 +329,21 @@ insertCheckOffChainPoolFetchError pofe = do
326329
foundMeta <- existsPoolMetadataRefId (offChainPoolFetchErrorPmrId pofe)
327330
when (foundPool && foundMeta) . void $ insertCheckUnique "OffChainPoolFetchError" pofe
328331

329-
insertOffChainVoteData :: (MonadBaseControl IO m, MonadIO m) => OffChainVoteData -> ReaderT SqlBackend m ()
332+
insertOffChainVoteData :: (MonadBaseControl IO m, MonadIO m) => OffChainVoteData -> ReaderT SqlBackend m (Maybe OffChainVoteDataId)
330333
insertOffChainVoteData ocvd = do
331334
foundVotingAnchor <- existsVotingAnchorId (offChainVoteDataVotingAnchorId ocvd)
332-
when foundVotingAnchor . void $ insertCheckUnique "OffChainVoteData" ocvd
335+
if foundVotingAnchor
336+
then Just <$> insertCheckUnique "OffChainVoteData" ocvd
337+
else pure Nothing
338+
339+
insertOffChainVoteAuthors :: (MonadBaseControl IO m, MonadIO m) => [OffChainVoteAuthor] -> ReaderT SqlBackend m ()
340+
insertOffChainVoteAuthors = void . insertMany' "OffChainVoteAuthor"
341+
342+
insertOffChainVoteReference :: (MonadBaseControl IO m, MonadIO m) => [OffChainVoteReference] -> ReaderT SqlBackend m ()
343+
insertOffChainVoteReference = void . insertMany' "OffChainVoteReference"
344+
345+
insertOffChainVoteExternalUpdate :: (MonadBaseControl IO m, MonadIO m) => [OffChainVoteExternalUpdate] -> ReaderT SqlBackend m ()
346+
insertOffChainVoteExternalUpdate = void . insertMany' "OffChainVoteExternalUpdate"
333347

334348
insertOffChainVoteFetchError :: (MonadBaseControl IO m, MonadIO m) => OffChainVoteFetchError -> ReaderT SqlBackend m ()
335349
insertOffChainVoteFetchError ocvfe = do

0 commit comments

Comments
 (0)