2 个不稳定版本
0.2.0 | 2020 年 5 月 10 日 |
---|---|
0.1.0 | 2020 年 5 月 9 日 |
#87 in #reqwest
5KB
LucidKV 客户端
基于 Reqwest 的 LucidKV 数据库客户端(支持 0.14)
对于测试,必须有 lucid 数据库,您可以使用预配置的 docker-compose/dockerfile。
我将尝试制作一个支持环境变量的 Lucid 图像,这将修复 CI 中的测试并有助于其他情况(这就是为什么测试在 drone-ci 上失败的原因)。
待办事项
- 基本的 Reqwest 功能
- 实现所有端点(缺少执行特定操作)
- JWT 身份验证
- 使用功能标志来公开不同的 HTTP 客户端(计划 AWC),这对使用应用程序中已有其他 HTTP 客户端的人很有用,reqwest 最初主要用作 PoC,我认为 reqwest 已经成熟且易于使用
- 添加对数据库版本的检查
操作将定义为枚举以提供类型安全
操作有
- 锁定 / 解锁
- 增加 / 减少
- 定义 / 取消过期
示例
创建客户端
每个操作都将指向: base_url/api/kv/
因此您只需指定主机。
默认情况下,base_url 将为 http://127.0.0.1:7020
// Without a base URL
let lucid_client_1 = LucidKVClient::new(None);
// With a base URL
let lucid_client_2 = LucidKVClient::new(Some("http://1.2.3.4:7020".into()));
操作
use serde_derive::{Serialize};
// Serializable data
#[derive(Serialize)]
struct DemoData {
demo: String,
}
// Demo data
let mut data = DemoData {
demo: "Something",
};
// Client instance
let lucid_client = LucidKVClient::new(None);
// Create
let res = lucid_client.store_data("key".into(), data).await?;
assert_eq!(res.status(), reqwest::StatusCode::OK);
// Read
let res = lucid_client.get_data("key".into()).await.unwrap();
assert_eq!(res.status(), reqwest::StatusCode::OK);
// Update
data = DemoData {
demo: "And now for something completely different",
}
let res = lucid_client.store_data("key".into(), data).await?;
assert_eq!(res.status(), reqwest::StatusCode::OK);
// Delete
// TODO
// Has key
// TODO
变更日志
0.1
new
的实现用于创建新的客户端,可选择性指定base_url
- 实现 CRUD 操作
is_key_present
向 lucid 发送HEAD
请求
0.2
- 唯一的变化是
is_key_present
,现在它将返回一个bool
依赖项
~2.9–7.5MB
~164K SLoC