@@ -26,7 +26,6 @@ import qualified Data.Text.Encoding as Text
2626import Data.Time
2727
2828import qualified Database.PostgreSQL.Simple as SQL
29-
3029import VVA.Config
3130import VVA.Pool (ConnectionPool , withPool )
3231import qualified VVA.Proposal as Proposal
@@ -36,29 +35,19 @@ import VVA.Types (AppError, DRepInfo (..), DRepRegist
3635sqlFrom :: ByteString -> SQL. Query
3736sqlFrom bs = fromString $ unpack $ Text. decodeUtf8 bs
3837
39- getVotingPowerSql :: SQL. Query
40- getVotingPowerSql = sqlFrom $ (embedFile " sql/get-voting-power.sql" )
41-
42- getVotingPower ::
43- (Has ConnectionPool r , Has VVAConfig r , MonadReader r m , MonadIO m , MonadFail m ) =>
44- Text ->
45- m Integer
46- getVotingPower drepId = withPool $ \ conn -> do
47- result <-
48- liftIO
49- (SQL. query @ _ @ (SQL. Only Scientific ) conn getVotingPowerSql $ SQL. Only drepId)
50- case result of
51- [SQL. Only votingPower] -> return $ floor votingPower
52- [] -> return 0
53-
5438listDRepsSql :: SQL. Query
5539listDRepsSql = sqlFrom $ (embedFile " sql/list-dreps.sql" )
5640
5741listDReps ::
5842 (Has ConnectionPool r , Has VVAConfig r , MonadReader r m , MonadIO m ) =>
59- m [DRepRegistration ]
60- listDReps = withPool $ \ conn -> do
61- results <- liftIO $ SQL. query_ conn listDRepsSql
43+ Maybe Text -> m [DRepRegistration ]
44+ listDReps mSearchQuery = withPool $ \ conn -> do
45+ let searchParam = fromMaybe " " mSearchQuery
46+ results <- liftIO $ SQL. query conn listDRepsSql
47+ ( searchParam
48+ , " %" <> searchParam <> " %"
49+ , " %" <> searchParam <> " %"
50+ )
6251 timeZone <- liftIO getCurrentTimeZone
6352 return
6453 [ DRepRegistration drepHash drepView isScriptBased url dataHash (floor @ Scientific deposit) votingPower status drepType txHash (localTimeToUTC timeZone date) metadataError paymentAddress givenName objectives motivations qualifications imageUrl imageHash
@@ -95,6 +84,19 @@ listDReps = withPool $ \conn -> do
9584 | Data.Maybe. isJust url = DRep
9685 ]
9786
87+ getVotingPowerSql :: SQL. Query
88+ getVotingPowerSql = sqlFrom $ (embedFile " sql/get-voting-power.sql" )
89+
90+ getVotingPower ::
91+ (Has ConnectionPool r , Has VVAConfig r , MonadReader r m , MonadIO m , MonadFail m ) =>
92+ Text ->
93+ m Integer
94+ getVotingPower drepId = withPool $ \ conn -> do
95+ result <- liftIO (SQL. query @ _ @ (SQL. Only Scientific ) conn getVotingPowerSql $ SQL. Only drepId)
96+ case result of
97+ [SQL. Only votingPower] -> return $ floor votingPower
98+ [] -> return 0
99+
98100getVotesSql :: SQL. Query
99101getVotesSql = sqlFrom $ (embedFile " sql/get-votes.sql" )
100102
@@ -105,17 +107,23 @@ getVotes ::
105107 m ([Vote ], [Proposal ])
106108getVotes drepId selectedProposals = withPool $ \ conn -> do
107109 results <- liftIO $ SQL. query conn getVotesSql (SQL. Only drepId)
108- let proposalsToSelect = if null selectedProposals
109- then [ govActionId | (_, govActionId, _, _, _, _, _, _, _) <- results]
110- else selectedProposals
111- proposals <- Proposal. getProposals (Just proposalsToSelect)
112- let proposalMap = M. fromList $ map (\ x -> (proposalId x, x)) proposals
113- timeZone <- liftIO getCurrentTimeZone
114- return
115- ([ Vote proposalId' drepId' vote' url' docHash' epochNo' (localTimeToUTC timeZone date') voteTxHash'
116- | (proposalId', govActionId', drepId', vote', url', docHash', epochNo', date', voteTxHash') <- results
117- , govActionId' `elem` proposalsToSelect
118- ], proposals)
110+
111+ if null results
112+ then return ([] , [] )
113+ else do
114+ let proposalsToSelect = if null selectedProposals
115+ then [ govActionId | (_, govActionId, _, _, _, _, _, _, _) <- results]
116+ else selectedProposals
117+ proposals <- if null proposalsToSelect
118+ then return []
119+ else Proposal. getProposals (Just proposalsToSelect)
120+ let proposalMap = M. fromList $ map (\ x -> (proposalId x, x)) proposals
121+ timeZone <- liftIO getCurrentTimeZone
122+ let votes = [ Vote proposalId' drepId' vote' url' docHash' epochNo' (localTimeToUTC timeZone date') voteTxHash'
123+ | (proposalId', govActionId', drepId', vote', url', docHash', epochNo', date', voteTxHash') <- results
124+ , govActionId' `elem` proposalsToSelect
125+ ]
126+ return (votes, proposals)
119127
120128getDRepInfoSql :: SQL. Query
121129getDRepInfoSql = sqlFrom $ (embedFile " sql/get-drep-info.sql" )
0 commit comments