11 releases

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

#2412 in Database interfaces

Download history 97/week @ 2024-08-02 18/week @ 2024-08-09 267/week @ 2024-08-16 173/week @ 2024-08-23 123/week @ 2024-08-30 285/week @ 2024-09-06 40/week @ 2024-09-13 7/week @ 2024-09-20 123/week @ 2024-09-27 140/week @ 2024-10-04 198/week @ 2024-10-11 193/week @ 2024-10-18 24/week @ 2024-10-25 16/week @ 2024-11-01

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

MIT license

63KB
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

~17–38MB
~545K SLoC