spring-sqlx

Crates.iospring-sqlx
lib.rsspring-sqlx
version0.2.3
sourcesrc
created_at2024-08-07 04:50:07.415905
updated_at2024-10-19 08:14:58.124396
descriptionIntegration of spring-rs framework and sqlx
homepage
repositoryhttps://github.com/spring-rs/spring-rs
max_upload_size
id1328074
size13,800
holmofy (holmofy)

documentation

README

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

Commit count: 479

cargo fmt