9 个版本
新版本 0.1.8 | 2024年8月15日 |
---|---|
0.1.7 | 2024年6月8日 |
0.1.6 | 2023年10月3日 |
0.1.5 | 2023年9月1日 |
0.1.1 | 2023年3月22日 |
964 在 数据库接口 中
每月 187 次下载
67KB
1.5K SLoC
fast_firestore
快速、即插即用的 Firestore 库
这是一个使用 grpc 作为后端的快速、即插即用的 Firestore 库,无需管理令牌、认证或使用自定义数据管理 API,您可以使用 json crate 创建和编辑文档。它在 Rust 中的使用非常简单。
- 管理 GCP 令牌
- 基于 json 的对象管理
- 所有核心 API
- 不支持转换器
- 所有原生 Firestore 数据类型仅支持读取,作为自定义 json 对象
use fast_firestore::{
Error,DB,ApiV1,
BatchWrite,BatchWriteOpp
};
use json::object;
pub async fn init(path:String,project_id:String)->Result<(),Error>{
let mut client = DB::connect(path,project_id).await?;
//add
if false{
if false {client.create_document(
"",
"users", "akku", &object!{
"name":"akku",
"age":25,
"score":50
}
).await?;}
if false {client.create_document(
"",
"users", "akku1", &object!{
"name":"akku1",
"age":20,
"score":60
}
).await?;}
if false {client.create_document(
"",
"users", "akku2", &object!{
"name":"akku2",
"age":23,
"score":70
}
).await?;}
if false{
if false{client.create_document(
"/users/akku",
"books", "king", &object!{
"book_name":"king",
"price":12,
}
).await?;}
if false{client.create_document(
"/users/akku/books/king",
"purchase", "india", &object!{
"units":5000,
}
).await?;}
}
}
//get
if false{
let res = client.get_document(
"/users/akku/books/king"
).await?;
println!("get : {:?}",res.json);
}
//update doc
if false{
let mut doc = client.get_document(
"/users/akku1",
).await?;
doc.json["score"] = 65.into();
let update = doc.update(&mut client).await?;
println!("update : {:?}",update);
}
//update
if false{
let update = client.update(
"/users/akku1",
&object!{
"score":65
}
).await?;
println!("update : {:?}",update);
}
//delete
if false{
let res = client.delete_document(
"/users/akku2"
).await?;
println!("delete : {:?}",res);
}
//query
if false{
let mut query = DB::new_query();
// query.parent("/users");
query.from("users",true);
query.add_where("age",">=",23.into());
query.limit(2);
let res = query.run(&mut client).await?;
println!("query res : {:?}",res);
}
if false{
let res = client.batch_read(vec![
"/users/akku".to_string(),
"/users/akku2".to_string(),
"/users/akku1".to_string()
]).await?;
println!("batch_read res : {:?}",res);
}
//=======================
if false {client.create_document(
"",
"users", "akku2", &object!{
"name":"akku2",
"age":23,
"score":70
}
).await?;}
if true{
let res = client.batch_write(vec![
BatchWriteOpp::Update(BatchWrite{
path:"/users/akku3".to_string(),
doc:object!{
age:23,
name:"akku3",
score:112
}
}),
BatchWriteOpp::Update(BatchWrite{
path:"/users/akku4".to_string(),
doc:object!{
age:11,
name:"akku4",
score:119
}
}),
BatchWriteOpp::Delete("/users/akku2".to_string())
]).await?;
println!("batch_write res : {:?}",res);
}
return Ok(());
}
依赖项
~25–38MB
~606K SLoC