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

MIT 许可证

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