7 releases

new 0.1.1 Sep 8, 2024
0.1.0 Sep 7, 2024
0.0.9 Sep 4, 2024
0.0.8 Aug 25, 2024

#2087 in Database interfaces

Download history 112/week @ 2024-08-06 149/week @ 2024-08-13 284/week @ 2024-08-20 18/week @ 2024-08-27 378/week @ 2024-09-03

831 downloads per month

MIT license

40KB
764 lines

crates.io Documentation

Dependencies

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

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

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

~15–32MB
~525K SLoC