45 个版本

0.10.1 2024年5月6日
0.10.0 2024年3月22日
0.9.4 2023年11月15日
0.9.2 2023年3月10日
0.8.25 2020年11月16日

#69数据库接口

Download history 869/week @ 2024-05-04 1288/week @ 2024-05-11 1336/week @ 2024-05-18 929/week @ 2024-05-25 1487/week @ 2024-06-01 1359/week @ 2024-06-08 987/week @ 2024-06-15 1061/week @ 2024-06-22 1091/week @ 2024-06-29 1132/week @ 2024-07-06 967/week @ 2024-07-13 765/week @ 2024-07-20 940/week @ 2024-07-27 596/week @ 2024-08-03 446/week @ 2024-08-10 465/week @ 2024-08-17

2,558 每月下载
用于 couch_rs_test

MIT/Apache

165KB
3K SLoC

CouchDB 的 Rust 库

Crates.io docs.rs Build License dependency status Downloads

文档

在这里: http://docs.rs/couch_rs

安装

在 Cargo.toml 文件中包含此依赖项

[dependencies]
couch_rs = "0.9"

描述

此 crate 是 CouchDB HTTP REST API 的接口。与稳定 Rust 兼容。

此库是基于 Mathieu Amiot 和 Yellow Innovation 团队在 Sofa 库上所做的出色工作而衍生出来的。原始项目可以在 https://github.com/YellowInnovation/sofa 找到

Sofa 库不支持异步 I/O,并且缺少我们在项目中需要的一些基本操作。因此,我决定基于原始 Sofa 代码创建一个新项目。

rust-rs 库已更新到 Rust 2018 版本标准,使用异步 I/O,并针对最新的 serde 和 reqwest 库进行编译。

尚未是 1.0 版本,因此请期待变化

支持 CouchDB 2.3.0 及以上版本。已与包括 3.2.2 在内的各种 CouchDB 版本在生产中使用。

请务必详细查看 CouchDB 的文档,以了解可能的功能。

用法

一个典型的查找操作看起来像这样

use couch_rs::types::find::FindQuery;
use std::error::Error;
use serde_json::Value;
use couch_rs::document::DocumentCollection;

const DB_HOST: &str = "https://127.0.0.1:5984";
const TEST_DB: &str = "test_db";

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
  let client = couch_rs::Client::new(DB_HOST, "admin", "password")?;
  let db = client.db(TEST_DB).await?;
  let find_all = FindQuery::find_all();
  let docs = db.find_raw(&find_all).await?;
  Ok(())
}

示例

您可以使用以下命令启动包含的示例

cargo run --example basic_operations

运行测试

确保您有一个运行中的 CouchDB 2.0+ 实例,无论是通过提供的 docker-compose.yml 文件还是自行运行。它必须监听默认端口。由于 Couch 3.0,"Admin Party" 模式不再受支持。这意味着您需要在启动时提供用户名和密码。测试和示例假设有一个名为 "admin" 的 CouchDB 用户和一个名为 "password" 的 CouchDB 密码。Docker 运行命令

docker run --rm -p 5984:5984 -e COUCHDB_USER=admin -e COUCHDB_PASSWORD=password couchdb:3

然后 cargo test --features=integration-tests -- --test-threads=1

将测试单线程化非常重要,因为我们需要在实际上测试 db/documents 的功能之前确保基本功能正常工作。

如果您的环境中可用bash,您还可以使用test.sh脚本,该脚本基本上与上面描述的相同。

许可证

以下任一许可证下授权

免责声明

请注意:本存储库中所有内容均按“原样”发布,不提供任何类型的保证,包括但不限于它们的安装、使用或性能。我们放弃任何明示或暗示的保证,包括但不限于不侵权、适销性和/或适用于特定目的的保证。我们不保证该技术将满足您的需求,其操作将不间断或无错误,或错误将得到纠正。

您使用此库的风险自负。我们无法保证它在类似环境中经过彻底测试,我们不承担任何使用过程中产生的任何损坏或数据丢失的责任。

您有责任在使用任何非测试环境之前,彻底审查和测试您运行的任何代码。

依赖项

~6–21MB
~340K SLoC