#proc-macro #derive #index #sql #smoldb

smoldb_derive

smoldb的过程宏

1 个不稳定版本

0.1.0 2020年4月18日

#536 in #index


smoldb 中使用

MPL-2.0 许可证

14KB
200

smoldb

这是一个基于SQLite的非常实验性的抽象数据库接口,旨在允许类型安全的NoSQL-like*存储与索引兼容的serde对象,而不需要编写任何SQL。

*实际上无法搜索任意文档,您必须事先决定要索引的内容。然而,您可以存储任意文档,这可能对某些应用来说已经足够。

这包括一组在smoldb_traits中的特性以及一组在smoldb_derive中的过程宏,所有内容都方便地重新导出到顶层smoldb包中。

查看示例以获取一个工作示例。

功能

  • SQL基础
    • 插入
    • 选择
    • 更新
    • 删除
  • 扩展类型(目前所有内容都是字符串)
    • 整数
    • 字符串
    • 二进制数据

待办事项

  • 清理/拆分宏
  • 使StoreStorage类型上实现泛型
  • 泛型化Serde编码器/解码器
  • 将索引类型更改为使用&str&[u8]分别替换StringVec<u8>

使用方法

首先,定义一个可序列化并从Smoldb派生的类型。宏#[index]指定您希望能够使用此索引搜索对象。请注意,任何不可索引的类型都必须实现ToSql


#[derive(Clone, Debug, PartialEq, Smoldb, Serialize, Deserialize)]
pub struct User {
  #[index]
  pub id: isize,

  #[index]
  pub name: String,

  pub email: String,

  pub description: String,
}

您可以使用 Store 特性来与对象进行交互。请注意,某些方法需要使用完全限定特性语法来提供类型信息(通常是在您没有传递对象的情况下)。

依赖项

~23MB
~439K SLoC