Skip to content

Commit

Permalink
[#1234] modify redis config
Browse files Browse the repository at this point in the history
  • Loading branch information
jankun4 authored and MSzalowski committed Jul 1, 2024
1 parent c31cdc2 commit 45cc8aa
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 17 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ changes.

### Changed

- `redis` config fields changed [Issue 1234](https://github.com/IntersectMBO/govtool/issues/1234)
- `proposal.about` changed to `proposal.abstract`
- `drep/info` now returns 4 different tx hashes instead of one latest tx hash [Issue 688](https://github.com/IntersectMBO/govtool/issues/688)
- `proposal/list` allows user to search by tx hash [Issue 603](https://github.com/IntersectMBO/govtool/issues/603)
Expand Down
7 changes: 5 additions & 2 deletions govtool/backend/example-config.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@
"metadatavalidationhost": "localhost",
"metadatavalidationport": 3001,
"metadatavalidationmaxconcurrentrequests": 10,
"redishost": "localhost",
"redisport": 6379
"redisconfig" : {
"host" : "localhost",
"port" : 8094,
"password": null
}
}
48 changes: 34 additions & 14 deletions govtool/backend/src/VVA/Config.hs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ module VVA.Config
, getServerPort
, getRedisHost
, getRedisPort
, getRedisPassword
, vvaConfigToText
, getMetadataValidationHost
, getMetadataValidationPort
Expand Down Expand Up @@ -68,6 +69,14 @@ data DBConfig
instance DefaultConfig DBConfig where
configDef = DBConfig "localhost" "cexplorer" "postgres" "test" 9903

data RedisInternalConfig
= RedisInternalConfig
{ redisInternalConfigHost :: Text
, redisInternalConfigPort :: Int
, redisInternalConfigPassword :: Maybe Text
}
deriving (FromConfig, Generic, Show)

-- | Internal, backend-dependent representation of configuration for DEX. This
-- data type should not be exported from this module.
data VVAConfigInternal
Expand All @@ -90,10 +99,8 @@ data VVAConfigInternal
, vVAConfigInternalMetadataValidationPort :: Int
-- | Maximum number of concurrent metadata requests
, vVAConfigInternalMetadataValidationMaxConcurrentRequests :: Int
-- | Redis host
, vVAConfigInternalRedisHost :: Text
-- | Redis port
, vVAConfigInternalRedisPort :: Int
-- | Redis config
, vVAConfigInternalRedisConfig :: RedisInternalConfig
}
deriving (FromConfig, Generic, Show)

Expand All @@ -109,9 +116,16 @@ instance DefaultConfig VVAConfigInternal where
vVAConfigInternalMetadataValidationHost = "localhost",
vVAConfigInternalMetadataValidationPort = 3001,
vVAConfigInternalMetadataValidationMaxConcurrentRequests = 10,
vVAConfigInternalRedisHost = "localhost",
vVAConfigInternalRedisPort = 6379
vVAConfigInternalRedisConfig = RedisInternalConfig "localhost" 6379 Nothing
}

data RedisConfig
= RedisConfig
{ redisHost :: Text
, redisPort :: Int
, redisPassword :: Maybe Text
}
deriving (Generic, Show, ToJSON)

-- | DEX configuration.
data VVAConfig
Expand All @@ -134,10 +148,8 @@ data VVAConfig
, metadataValidationPort :: Int
-- | Maximum number of concurrent metadata requests
, metadataValidationMaxConcurrentRequests :: Int
-- | Redis host
, redisHost :: Text
-- | Redis port
, redisPort :: Int
-- | Redis config
, redisConfig :: RedisConfig
}
deriving (Generic, Show, ToJSON)

Expand Down Expand Up @@ -182,8 +194,11 @@ convertConfig VVAConfigInternal {..} =
metadataValidationHost = vVAConfigInternalMetadataValidationHost,
metadataValidationPort = vVAConfigInternalMetadataValidationPort,
metadataValidationMaxConcurrentRequests = vVAConfigInternalMetadataValidationMaxConcurrentRequests,
redisHost = vVAConfigInternalRedisHost,
redisPort = vVAConfigInternalRedisPort
redisConfig = RedisConfig
{ redisHost = redisInternalConfigHost $ vVAConfigInternalRedisConfig,
redisPort = redisInternalConfigPort $ vVAConfigInternalRedisConfig,
redisPassword = redisInternalConfigPassword $ vVAConfigInternalRedisConfig
}
}

-- | Load configuration from a file specified on the command line. Load from
Expand Down Expand Up @@ -226,13 +241,18 @@ getServerHost = asks (serverHost . getter)
getRedisHost ::
(Has VVAConfig r, MonadReader r m) =>
m Text
getRedisHost = asks (redisHost . getter)
getRedisHost = asks (redisHost . redisConfig . getter)

-- | Access redis port
getRedisPort ::
(Has VVAConfig r, MonadReader r m) =>
m Int
getRedisPort = asks (redisPort . getter)
getRedisPort = asks (redisPort . redisConfig . getter)

getRedisPassword ::
(Has VVAConfig r, MonadReader r m) =>
m (Maybe Text)
getRedisPassword = asks (redisPassword . redisConfig . getter)

-- | Access MetadataValidationService host
getMetadataValidationHost ::
Expand Down
7 changes: 6 additions & 1 deletion govtool/backend/src/VVA/Metadata.hs
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,12 @@ storeMetadata ::
storeMetadata metadataResults = do
port <- getRedisPort
host <- getRedisHost
conn <- liftIO $ Redis.checkedConnect $ Redis.defaultConnectInfo {Redis.connectHost = unpack host, Redis.connectPort = Redis.PortNumber $ fromIntegral port}
pass <- fmap Text.encodeUtf8 <$> getRedisPassword
conn <- liftIO $ Redis.checkedConnect $ Redis.defaultConnectInfo
{ Redis.connectHost = unpack host
, Redis.connectPort = Redis.PortNumber $ fromIntegral port
, Redis.connectAuth = pass
}
liftIO $ Redis.runRedis conn $ do
forM metadataResults $ \(reddisId, metadataValidationResult) -> do
_ <- Redis.set (Text.encodeUtf8 reddisId) (toStrict $ encode metadataValidationResult)
Expand Down

0 comments on commit 45cc8aa

Please sign in to comment.