11 releases

new 0.2.3 Oct 19, 2024
0.2.2 Oct 13, 2024
0.2.0 Sep 28, 2024
0.1.1 Sep 8, 2024
0.0.8 Aug 25, 2024

#2448 in Database interfaces

Download history 110/week @ 2024-08-05 147/week @ 2024-08-12 266/week @ 2024-08-19 40/week @ 2024-08-26 351/week @ 2024-09-02 58/week @ 2024-09-09 38/week @ 2024-09-16 84/week @ 2024-09-23 124/week @ 2024-09-30 197/week @ 2024-10-07 223/week @ 2024-10-14

630 downloads per month
Used in spring-sqlx-migration-plu…

MIT license

53KB
1K SLoC

crates.io Documentation

Dependencies

spring-sqlx = { version = "<version>", features = ["mysql"] }

You can replace postgres, mysql, sqlitefeature to select the appropriate database driver.

optional features:

  • with-json
  • with-chrono
  • with-rust_decimal
  • with-bigdecimal
  • with-uuid
  • with-time

Configuration items

[sqlx]
uri = "postgres://root:123456@localhost:5432/pg_db"  # Database address
min_connections = 1          # Minimum number of connections in the connection pool, the default value is 1
max_connections = 10         # Maximum number of connections in the connection pool, the default value is 10
acquire_timeout = 30000      # Connection timeout, in milliseconds, default 30s
idle_timeout = 600000        # Connection idle time, in milliseconds, default 10min
connect_timeout = 1800000    # Maximum connection survival time, in milliseconds, default 30min

Components

After configuring the above configuration items, the plugin will automatically register a ConnectPool connection pool object. This object is an alias for sqlx::AnyPool.

pub type ConnectPool = sqlx::AnyPool;

Extract the Component registered by the plugin

The SqlxPlugin plugin automatically registers a Sqlx connection pool component for us. We can use Component to extract this connection pool from AppState. Component is an axum extractor.

use spring_sqlx::{sqlx::{self, Row}, ConnectPool};
use spring_web::get;
use spring_web::extractor::Component;
use spring_web::error::Result;
use anyhow::Context;

#[get("/version")]
async fn mysql_version(Component(pool): Component<ConnectPool>) -> Result<String> {
    let version = sqlx::query("select version() as version")
        .fetch_one(&pool)
        .await
        .context("sqlx query failed")?
        .get("version");
    Ok(version)
}

Complete code reference sqlx-example

Dependencies

~16–33MB
~533K SLoC