#surrealdb #surreal #sql

surreal_use

基于Surrealdb库的扩展库,帮助用户更方便地开发

1 个不稳定版本

0.1.0 2024年2月3日

#986数据库接口

每月 44 次下载

MIT 许可证

135KB
3K SLoC


surreal_use

基于Surrealdb库的扩展库,帮助用户更方便地开发

 ________  ___  ___  ________  ________  _______   ________  ___        ___  ___  ________  _______
|\   ____\|\  \|\  \|\   __  \|\   __  \|\  ___ \ |\   __  \|\  \      |\  \|\  \|\   ____\|\  ___ \
\ \  \___|\ \  \\\  \ \  \|\  \ \  \|\  \ \   __/|\ \  \|\  \ \  \     \ \  \\\  \ \  \___|\ \   __/|
 \ \_____  \ \  \\\  \ \   _  _\ \   _  _\ \  \_|/_\ \   __  \ \  \     \ \  \\\  \ \_____  \ \  \_|/__
  \|____|\  \ \  \\\  \ \  \\  \\ \  \\  \\ \  \_|\ \ \  \ \  \ \  \____ \ \  \\\  \|____|\  \ \  \_|\ \
    ____\_\  \ \_______\ \__\\ _\\ \__\\ _\\ \_______\ \__\ \__\ \_______\\ \_______\____\_\  \ \_______\
   |\_________\|_______|\|__|\|__|\|__|\|__|\|_______|\|__|\|__|\|_______| \|_______|\_________\|_______|
   \|_________|                                                                     \|_________|

surreal_use做什么

  • 分离数据库配置和代码
  • 减少手动编写SurrealQL语句
  • 执行差异化的API查询
  • 轻松执行复杂查询
  • 使用户能够与Surrealdb库无缝集成

快速入门

编写surrealdb.config.json

{
  "endpoint":"127.0.0.1",
  "port":10086,
  "auth":{
    "user":"root",
    "pass":"root"
  }
}

使用surreal_use

use lazy_static::lazy_static;
use surreal_use::{
    config::{auth::Root, parser::Parsers, AuthBridger},
    core::Stmt,
};
use surrealdb::{
    engine::remote::ws::{Client, Ws},
    Surreal,
};

// use lazy static macro
lazy_static! {
    static ref DB: Surreal<Client> = Surreal::init();
}

#[tokio::main]
async fn main() -> surrealdb::Result<()> {
    // Using seasonal_ Use to obtain the configuration of surrealdbunconfig.json under the project package
    let config = Parsers::Json.parse_to_config(None);
    DB.connect::<Ws>(config.url()).await?;
    // transfer to credential Root
    let credentail: Root = config.get_auth().into();
    // Sigin use Root
    // Return Jwt struct
    let _ = DB.signin(credentail.to_lower_cast()).await?;
    let _ = DB.use_ns("test").use_db("test").await?;
    let select = Stmt::select().table("user".into()).field_all().to_string();
    let query = DB.query(&select).await?;
    dbg!(query);
    Ok(())
}

注意

使用与surrealdb库同名的大量结构,作为源库的扩展存在

特性

  • select
  • update
  • insert
  • delete
  • create
  • use
  • begin
  • break
  • cancel
  • commit
  • continue
  • define
  • for
  • if
  • info
  • kill
  • let
  • live select
  • relate
  • remove
  • return
  • show
  • sleep
  • throw

依赖项

~44–59MB
~1M SLoC