5个版本

0.2.0 2024年5月23日
0.1.0 2023年11月17日
0.1.0-rc.42023年11月2日
0.1.0-rc.32023年3月24日
0.1.0-rc.22022年5月9日

#886进程宏

Download history 1734/week @ 2024-04-15 1951/week @ 2024-04-22 1897/week @ 2024-04-29 1423/week @ 2024-05-06 1534/week @ 2024-05-13 2034/week @ 2024-05-20 1761/week @ 2024-05-27 1775/week @ 2024-06-03 2264/week @ 2024-06-10 1932/week @ 2024-06-17 2164/week @ 2024-06-24 1421/week @ 2024-07-01 1588/week @ 2024-07-08 1570/week @ 2024-07-15 2179/week @ 2024-07-22 2113/week @ 2024-07-29

每月下载量 7,503
用于 11 个库 (通过 rocket_db_pools)

MIT/Apache

11KB
101

db_pools ci.svg crates.io docs.svg

为Rocket提供异步数据库驱动集成。有关完整用法详情,请参阅库文档

用法

  1. rocket_db_pools 作为依赖项添加,并启用一个或多个 数据库驱动功能

    [dependencies.rocket_db_pools]
    version = "0.2.0"
    features = ["sqlx_sqlite"]
    
  2. 为您的数据库选择一个名称,此处为 sqlite_logs配置 至少一个数据库的URL

    [default.databases.sqlite_logs]
    url = "/path/to/database.sqlite"
    
  3. 为单元类型(此处为 Logs)派生 Database,该类型包装所选驱动程序的 Pool 类型,并带有装饰 #[database("name")]。将 Type::init() 添加到您的应用 Rocket 中以初始化数据库池

    use rocket_db_pools::{Database, Connection};
    
    #[derive(Database)]
    #[database("sqlite_logs")]
    struct Logs(sqlx::SqlitePool);
    
    #[launch]
    fn rocket() -> _ {
        rocket::build().attach(Logs::init())
    }
    
  4. 使用 Connection<Type> 作为请求守卫来检索一个活动的数据库连接

    #[get("/<id>")]
    async fn read(mut db: Connection<Logs>, id: i64) -> Result<Log> {
        sqlx::query!("SELECT content FROM logs WHERE id = ?", id)
            .fetch_one(&mut *db)
            .map_ok(|r| Log(r.content))
            .await
    }
    

依赖项

~0.4–1MB
~21K SLoC