9个版本
0.1.1 | 2023年4月30日 |
---|---|
0.0.8 | 2023年1月10日 |
0.0.7 | 2022年12月24日 |
0.0.6 | 2022年10月10日 |
在 开发工具 中排名 #454
每月下载 21 次
31KB
714 代码行
口袋库SDK
为口袋库客户端提供的Rust SDK。口袋库是一个开源的后端,用于您的SaaS和移动应用。本项目的目标是围绕口袋库公开的API创建一个封装器,以抽象出不必要的实现细节,这样您就可以专注于构建您的应用程序,而无需担心与口袋库的集成。
当前与口袋库版本 0.15.1 兼容
注意
口袋库SDK 0.1.1版本是完全重新实现,与先前版本不兼容。语法已修改为更简约。这样做是为了使口袋库SDK更具用户友好性,并便于持续维护口袋库SDK。
安装
$ cargo add pocketbase-sdk
$ cargo add serde
或者在您的 Cargo.toml
[dependencies]
pocketbase-sdk = "0.1.1"
serde = { version = "1.0.145", features = ["derive"] }
用法
use anyhow::Result;
use pocketbase_sdk::admin::Admin;
fn main() -> Result<()> {
env_logger::init();
// admin authentication
let authenticated_admin_client = Admin::new("https://127.0.0.1:8090")
.auth_with_password("[email protected]", "Sreedev123")?;
// collections list + Filter
let collections = authenticated_admin_client
.collections()
.list()
.page(1)
.per_page(100)
.call()?;
dbg!(collections);
// view collection
let user_collection = authenticated_admin_client
.collections()
.view("users")
.call()?;
dbg!(user_collection);
Ok(())
}
记录
use anyhow::Result;
use pocketbase_sdk::client::Client;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Deserialize, Default)]
pub struct Product {
pub id: String,
pub name: String,
pub count: i32,
}
#[derive(Debug, Clone, Serialize)]
pub struct NewProduct {
pub name: String,
pub count: i32,
}
fn main() -> Result<()> {
env_logger::init();
/* Authenticate Client */
let authenticated_client = Client::new("https://127.0.0.1:8090").auth_with_password(
"users",
"[email protected]",
"Sreedev123",
)?;
/* List Products */
let products = authenticated_client
.records("products")
.list()
.call::<Product>()?;
dbg!(products);
/* View Product */
let product = authenticated_client
.records("products")
.view("jme4ixxqie2f9ho")
.call::<Product>()?;
dbg!(product);
/* Create Product */
let new_product = NewProduct {
name: String::from("bingo"),
count: 69420,
};
let create_response = authenticated_client
.records("products")
.create(new_product)
.call()?;
dbg!(&create_response);
/* Update Product */
let updated_product = NewProduct {
name: String::from("bango"),
count: 69420,
};
let update_response = authenticated_client
.records("products")
.update(create_response.id.as_str(), updated_product)
.call()?;
dbg!(update_response);
/* Delete Product */
authenticated_client
.records("products")
.destroy(create_response.id.as_str())
.call()?;
Ok(())
}
日志
use anyhow::Result;
use pocketbase_sdk::admin::Admin;
fn main() -> Result<()> {
env_logger::init();
// admin authentication
let admin = Admin::new("https://127.0.0.1:8090")
.auth_with_password("[email protected]", "Sreedev123")?;
// list logs
let logs = admin.logs().list().page(1).per_page(10).call()?;
dbg!(&logs);
// view log
let somelogid = &logs.items[0].id;
let logitem = admin.logs().view(somelogid).call()?;
dbg!(logitem);
// view log statistics data points
let logstats = admin.logs().statistics().call()?;
dbg!(logstats);
Ok(())
}
健康检查
use anyhow::Result;
use pocketbase_sdk::client::Client;
fn main() -> Result<()> {
let client = Client::new("https://127.0.0.1:8090");
let health_check_response = client.health_check()?;
dbg!(health_check_response);
Ok(())
}
开发待办事项
- 提高测试覆盖率
- 集合
- 列出集合
- 查看集合
- 创建集合
- 身份验证刷新
- 请求密码重置
- 确认密码重置
- 列出管理员
- 查看管理员
- 创建管理员
- 更新管理员
- 删除管理员
- 文件
- 下载/检索文件
- 生成受保护文件令牌
- 记录
- 创建记录
- 更新记录
- 删除记录
- 批量删除记录
- 列出身份验证方法
- 使用OAuth2进行身份验证
- 身份验证刷新
- 请求验证
- 确认验证
- 请求密码重置
- 请求更改电子邮件
- 确认更改电子邮件
- 列出链接的外部身份验证提供者
- 取消链接外部身份验证提供者
- 实时API
- WebAsm支持
- 设置
- 列出
- 更新
- 健康检查
依赖项
~8–11MB
~282K SLoC