Skip to content

Commit

Permalink
add sslmode setting
Browse files Browse the repository at this point in the history
  • Loading branch information
Trisfald committed May 16, 2024
1 parent c6c3486 commit 209821b
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 5 deletions.
2 changes: 2 additions & 0 deletions src/bin/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,14 @@ async fn main() -> Result<(), Error> {
&config.database_url,
MAINNET_DB_NAME,
config.max_connections,
&config.sslmode,
)
.await?;
let db_testnet = connect_and_refresh_schema(
&config.database_url,
TESTNET_DB_NAME,
config.max_connections,
&config.sslmode,
)
.await?;

Expand Down
5 changes: 4 additions & 1 deletion src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,14 @@ pub struct Config {
#[arg(value_parser = parse_addr)]
pub server_address: SocketAddr,
/// Maximum number of database connections.
#[clap(env, short, long, default_value_t = 20)]
#[clap(env, short, long, default_value_t = 10)]
pub max_connections: u32,
/// Generate the database schema and exit.
#[clap(long, default_value_t = false)]
pub generate_schema: bool,
/// Postgres sslmode setting.
#[clap(env, long, default_value = "prefer")]
pub sslmode: String,
}

fn parse_addr(arg: &str) -> Result<SocketAddr, AddrParseError> {
Expand Down
13 changes: 9 additions & 4 deletions src/database.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,9 @@ async fn connect(
db_url: &str,
db_name: &str,
max_connections: u32,
sslmode: &str,
) -> Result<DatabaseConnection, Error> {
let mut opt = ConnectOptions::new(db_url);
let mut opt = ConnectOptions::new(format!("{db_url}?sslmode={sslmode}"));
opt.max_connections(max_connections)
.min_connections(5.min(max_connections));
let db = Database::connect(opt).await?;
Expand All @@ -37,8 +38,11 @@ async fn connect(
))
.await?;
}
let url = format!("{}/{}", db_url, db_name);
Database::connect(&url).await?
let url = format!("{db_url}/{db_name}?sslmode={sslmode}");
let mut opt = ConnectOptions::new(url);
opt.max_connections(max_connections)
.min_connections(5.min(max_connections));
Database::connect(opt).await?
}
DbBackend::Sqlite => unimplemented!(),
};
Expand All @@ -52,8 +56,9 @@ pub async fn connect_and_refresh_schema(
db_url: &str,
db_name: &str,
max_connections: u32,
sslmode: &str,
) -> Result<DatabaseConnection, Error> {
let db = connect(db_url, db_name, max_connections).await?;
let db = connect(db_url, db_name, max_connections, sslmode).await?;
let pending = Migrator::get_pending_migrations(&db).await?.len();
if pending == 0 {
info!("no database migrations to apply");
Expand Down

0 comments on commit 209821b

Please sign in to comment.