3 个版本

0.0.7 2024 年 8 月 21 日
0.0.6 2024 年 8 月 17 日
0.0.4 2024 年 8 月 7 日

#2046数据库接口

Download history 110/week @ 2024-08-05 147/week @ 2024-08-12

每月 257 次下载

MIT 许可证

36KB
648

crates.io Documentation

依赖项

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

您可以用 postgresmysqlsqlite功能来选择合适的数据库驱动。

配置项

[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

组件

配置以上配置项后,插件将自动注册一个 ConnectPool 连接池对象。此对象是 sqlx::AnyPool 的别名。

pub type ConnectPool = sqlx::AnyPool;

提取插件注册的组件

SqlxPlugin 插件会自动为我们注册一个 Sqlx 连接池组件。我们可以使用 Component 从 AppState 中提取此连接池。Component 是 axum 的一个 提取器

use spring::get;
use spring_sqlx::{sqlx::{self, Row}, ConnectPool};
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)
}

完整代码参考 sqlx-example

依赖项

~15–33MB
~523K SLoC