#client #reqwest #db #url #lucid-kv

lucid-client

基于 Reqwest 的 LucidKV 数据库客户端

2 个不稳定版本

0.2.0 2020 年 5 月 10 日
0.1.0 2020 年 5 月 9 日

#87 in #reqwest

MIT/Apache

5KB

LucidKV 客户端

Build Status

基于 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