3 个版本
新 0.0.7 | 2024 年 8 月 21 日 |
---|---|
0.0.6 | 2024 年 8 月 17 日 |
0.0.4 | 2024 年 8 月 7 日 |
#555 在 数据库接口
每月 261 次下载
34KB
644 代码行
依赖
spring-sea-orm = { version = "0.0.7", features = ["postgres"] }
sea-orm = { version = "1.0" } # Mainly to adapt to the entity code generated by sea-orm-cli
您可以用 postgres
、mysql
、sqlite
功能来选择合适的数据库驱动。
配置项
[sea-orm]
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
enable_logging = true # Print sql log
组件
配置上述配置项后,插件将自动注册一个 DbConn
连接池对象。此对象是 sea_orm::DbConn
的别名。
pub type DbConn = sea_orm::DbConn;
提取插件注册的组件
SeaOrmPlugin
插件自动为我们注册了一个连接池组件。我们可以使用 Component
从 AppState 中提取这个连接池。 Component
是 axum 的 extractor。
use spring::get;
use spring_sqlx::{sqlx::{self, Row}, ConnectPool};
use spring_web::extractor::Component;
use spring_web::error::Result;
use anyhow::Context;
#[get("/:id")]
async fn get_todo_list(
Component(db): Component<DbConn>,
Path(id): Path<i32>
) -> Result<String> {
let rows = TodoItem::find()
.filter(todo_item::Column::ListId.eq(id))
.all(&db)
.await
.context("query todo list failed")?;
Ok(Json(rows))
}
请参阅完整的代码 sea-orm-example
依赖
~18–35MB
~547K SLoC