Surrealism

LICEMSE

MIT

Surrealism Introduction

Surrealism依托于Surrealdb提供的Rust官方标准库:surrealdb,目的是构建一种更加统一,简单的方式对Surrealdb数据库进行各类操作

Surrealism relies on Surrealdb's official Rust standard library:surrealdb,The purpose is to build a more unified and simple way to perform various operations on Surrealdb database

QuickStart

add dependencies

toml [dependencies] surrealism = {version="0.2.0"} tokio = { version = "1.28.0", features = ["macros", "rt-multi-thread"] }

add configuration

配置:

可采用JSON或TOML两种配置文件方式

设置配置文件地址可以是: - ./Surrealism.toml - ./configs/Surrealism.toml - ./templates/Surrealism.toml


configuration:

Two configuration file methods can be used: JSON or TOML

The configuration file address can be set to:

❗note:当前SurrealDB仍处于开发阶段,对应连接鉴权方式:NS和DB并为支持,所以使用Surrealism进行配置时请以Root方式进行鉴权连接,不要设置ns和db!

❗note:Currently, SurrealDB is still in the development stage, and the corresponding connection authentication methods are supported: NS and DB. Therefore, when using Surrealsm for configuration, please use Root mode for authentication connections and do not set ns and db!

Surrealism.json(JSON)

json { "surreal" : "Single" "auth" : "Root" "username" : "root" "password" : "syf20020816" "url" : "127.0.0.1" "port" : 10086 "mode" : "Memory" "path" : "E:/Rust/surreal" "log" : {"level" : "Info", "print" : true," path" : "E:/surrealism/log" } }

Surrealism.toml(TOML)

toml [default] surreal = "Single" auth = "Root" username = "root" password = "syf20020816" url = "127.0.0.1" port = 10086 mode = "Memory" path = "E:/Rust/surreal" log = { level = "Info", print = true, path = "E:/surrealism/log" }

main.rs

```rust use surrealism::{DefaultInitService, InitService, SurrealID, SurrealismCommit, SurrealismConnector, SurrealismRes, Table, UseNSDB, parse_response}; use surrealism::builder::{BaseWrapperImpl, SQLBuilderFactory, TableImpl}; use surrealism::builder::create::{CreateWrapper, CreateWrapperImpl}; use serde::{Serialize, Deserialize}; use surrealism::builder::select::SelectWrapperImpl;

[derive(Debug, Clone, Serialize, Deserialize)]

struct User { username: String, pwd:String, male: bool, age: u8, }

/// create a new user table /// tablename:user /// tableid:surrealism pub fn crateusertable() -> CreateWrapper { // create a user data let user = User { username: "Tobie".tostring(), pwd: "Tobie001".tostring(), male: true, age: 23, }; // create table with content let usertable = SQLBuilderFactory::create() .table("user") .id(SurrealID::from("surrealism")) .content(&user) .derefmut(); user_table }

[tokio::main]

async fn main() -> SurrealismRes<()> { // init service let mut service = DefaultInitService::new().init(); // use ns:test and db:test let _ = service.usecommit("test", "test").await?; // get info from surrealdb // let info = SQLBuilderFactory::info().db().build(); // let infores = service.commitsql(&info).await?; // dbg!(infores); // create a table // let createstmt = crateusertable().build(); // let createres = service.commitsql(&createstmt).await?; // dbg!(createres); // select user::surrealism table let select = SQLBuilderFactory::select().table("user").id(SurrealID::from("surrealism")).column("*").build(); let selectres = service.commitsql(&select).await?; //parse response to any type you want let res: User = parseresponse(select_res); // [tests\src\main.rs:55] res = User { // username: "Tobie", // pwd: "Tobie001", // male: true, // age: 23, // } dbg!(&res); Ok(()) } ```

terminal res

```bash ▄▄▄▄ ▄▄▄▄ ██ ▄█▀▀▀▀█ ▀▀██ ▀▀ ██▄ ██ ██ ██▄████ ██▄████ ▄████▄ ▄█████▄ ██ ████ ▄▄█████▄ ████▄██▄ ▀████▄ ██ ██ ██▀ ██▀ ██▄▄▄▄██ ▀ ▄▄▄██ ██ ██ ██▄▄▄▄ ▀ ██ ██ ██ ▀██ ██ ██ ██ ██ ██▀▀▀▀▀▀ ▄██▀▀▀██ ██ ██ ▀▀▀▀██▄ ██ ██ ██ █▄▄▄▄▄█▀ ██▄▄▄███ ██ ██ ▀██▄▄▄▄█ ██▄▄▄███ ██▄▄▄ ▄▄▄██▄▄▄ █▄▄▄▄▄██ ██ ██ ██ ▀▀▀▀▀ ▀▀▀▀ ▀▀ ▀▀ ▀▀ ▀▀▀▀▀ ▀▀▀▀ ▀▀ ▀▀▀▀ ▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀ ▀▀ ▀▀ ▀▀

2023-08-30T03:06:57.875Z INFO [surrealism::core::config::init::default] Welcome to use Surrealism! 2023-08-30T03:06:57.878Z INFO [surrealism::core::config::init::default] Init Service : Config Service Successfully! 2023-08-30T03:06:57.878Z INFO [surrealism::core::config::init::default] Init Service : Log Service Successfully! 2023-08-30T03:06:57.886Z INFO [surrealism::core::config::init::default] Please focus following print to check! Version { router: Ok( Router { conn: PhantomData, sender: Sender, last_id: 0, features: { Auth, }, }, ), } 2023-08-30T03:06:57.888Z INFO [surrealism::core::config::init::default] Init Service : Connection Service Successfully! [tests\src\main.rs:60] &res = User { username: "Tobie", pwd: "Tobie001", male: true, age: 23, } ```

Update Des