From 3c4a32cea532b64a501ab0ce00af2a8ea0055b5e Mon Sep 17 00:00:00 2001 From: jankun4 Date: Thu, 28 Mar 2024 12:42:20 +0100 Subject: [PATCH] [#586] add epochNo and date to vote response Signed-off-by: jankun4 --- govtool/backend/sql/get-votes.sql | 4 +++- govtool/backend/src/VVA/API.hs | 4 +++- govtool/backend/src/VVA/API/Types.hs | 6 +++++- govtool/backend/src/VVA/DRep.hs | 8 +++++--- govtool/backend/src/VVA/Types.hs | 2 ++ 5 files changed, 18 insertions(+), 6 deletions(-) diff --git a/govtool/backend/sql/get-votes.sql b/govtool/backend/sql/get-votes.sql index 30dc5fc2b..18ff422fd 100644 --- a/govtool/backend/sql/get-votes.sql +++ b/govtool/backend/sql/get-votes.sql @@ -1,4 +1,4 @@ -select DISTINCT ON (voting_procedure.gov_action_proposal_id, voting_procedure.drep_voter) voting_procedure.gov_action_proposal_id, concat(encode(tx.hash,'hex'),'#',gov_action_proposal.index), encode(drep_hash.raw, 'hex'), voting_procedure.vote::text, voting_anchor.url, encode(voting_anchor.data_hash, 'hex') +select DISTINCT ON (voting_procedure.gov_action_proposal_id, voting_procedure.drep_voter) voting_procedure.gov_action_proposal_id, concat(encode(tx.hash,'hex'),'#',gov_action_proposal.index), encode(drep_hash.raw, 'hex'), voting_procedure.vote::text, voting_anchor.url, encode(voting_anchor.data_hash, 'hex'), block.epoch_no as epoch_no, block.time as time from voting_procedure join gov_action_proposal on gov_action_proposal.id = voting_procedure.gov_action_proposal_id @@ -8,5 +8,7 @@ left join voting_anchor on voting_anchor.id = voting_procedure.voting_anchor_id join tx on tx.id = gov_action_proposal.tx_id +join block +on block.id = tx.block_id where drep_hash.raw = decode(?, 'hex') order by voting_procedure.gov_action_proposal_id, voting_procedure.drep_voter, voting_procedure.id desc diff --git a/govtool/backend/src/VVA/API.hs b/govtool/backend/src/VVA/API.hs index 3796b52d3..c215e0486 100644 --- a/govtool/backend/src/VVA/API.hs +++ b/govtool/backend/src/VVA/API.hs @@ -149,7 +149,9 @@ voteToResponse Types.Vote {..} = voteParamsDrepId = HexText voteDrepId, voteParamsVote = voteVote, voteParamsUrl = voteUrl, - voteParamsMetadataHash = HexText <$> voteDocHash + voteParamsMetadataHash = HexText <$> voteDocHash, + voteParamsEpochNo = voteEpochNo, + voteParamsDate = voteDate } diff --git a/govtool/backend/src/VVA/API/Types.hs b/govtool/backend/src/VVA/API/Types.hs index 83352c56e..a591305b6 100644 --- a/govtool/backend/src/VVA/API/Types.hs +++ b/govtool/backend/src/VVA/API/Types.hs @@ -370,6 +370,8 @@ data VoteParams , voteParamsVote :: Text , voteParamsUrl :: Maybe Text , voteParamsMetadataHash :: Maybe HexText + , voteParamsEpochNo :: Integer + , voteParamsDate :: UTCTime } deriving (Generic, Show) @@ -381,7 +383,9 @@ exampleVoteParams = <> "\"drepId\": \"b4e4184bfedf920fec53cdc327de4da661ae427784c0ccca9e3c2f50\"," <> "\"vote\": \"yes\"," <> "\"url\": \"https://vote.metadata.xyz\"," - <> "\"metadataHash\": \"9af10e89979e51b8cdc827c963124a1ef4920d1253eef34a1d5cfe76438e3f11\" }" + <> "\"metadataHash\": \"9af10e89979e51b8cdc827c963124a1ef4920d1253eef34a1d5cfe76438e3f11\"," + <> "\"epochNo\": 0," + <> "\"date\": \"1970-01-01T00:00:00Z\"}" instance ToSchema VoteParams where declareNamedSchema proxy = do diff --git a/govtool/backend/src/VVA/DRep.hs b/govtool/backend/src/VVA/DRep.hs index 52008a2cd..eede66a81 100644 --- a/govtool/backend/src/VVA/DRep.hs +++ b/govtool/backend/src/VVA/DRep.hs @@ -23,6 +23,7 @@ import Data.Scientific import Data.String (fromString) import Data.Text (Text, pack, unpack) import qualified Data.Text.Encoding as Text +import Data.Time import qualified Database.PostgreSQL.Simple as SQL @@ -81,13 +82,14 @@ getVotes :: getVotes drepId selectedProposals = withPool $ \conn -> do results <- liftIO $ SQL.query conn getVotesSql (SQL.Only drepId) let proposalsToSelect = if null selectedProposals - then [ govActionId | (_, govActionId, _, _, _, _) <- results] + then [ govActionId | (_, govActionId, _, _, _, _, _, _) <- results] else selectedProposals proposals <- Proposal.getProposals (Just proposalsToSelect) let proposalMap = M.fromList $ map (\x -> (proposalId x, x)) proposals + timeZone <- liftIO getCurrentTimeZone return - ([ Vote proposalId' drepId' vote' url' docHash' - | (proposalId', govActionId', drepId', vote', url', docHash') <- results + ([ Vote proposalId' drepId' vote' url' docHash' epochNo' (localTimeToUTC timeZone date') + | (proposalId', govActionId', drepId', vote', url', docHash', epochNo', date') <- results , govActionId' `elem` proposalsToSelect ], proposals) diff --git a/govtool/backend/src/VVA/Types.hs b/govtool/backend/src/VVA/Types.hs index a741489be..15ac3595f 100644 --- a/govtool/backend/src/VVA/Types.hs +++ b/govtool/backend/src/VVA/Types.hs @@ -60,6 +60,8 @@ data Vote , voteVote :: Text , voteUrl :: Maybe Text , voteDocHash :: Maybe Text + , voteEpochNo :: Integer + , voteDate :: UTCTime } data DRepInfo