diff --git a/Cargo.toml b/Cargo.toml index fa18289..f085cc0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,5 +10,6 @@ axum = "0.7.5" axum-server = { version = "0.6.0", features = ["tls-rustls"] } serde = { version = "1.0.197", features = ["derive"] } serde_json = "1.0.115" +surrealdb = "1.3.1" tokio = { version = "1.36.0", features = ["full"] } tower-http = { version = "0.5.2", features = ["full"] } diff --git a/src/db.rs b/src/db.rs index e69de29..6dec5d6 100644 --- a/src/db.rs +++ b/src/db.rs @@ -0,0 +1,65 @@ +use serde::{Deserialize, Serialize}; +use surrealdb::{engine::remote::ws::{Client, Ws}, opt::auth::Root, sql::Thing, Surreal}; + +#[derive(Debug, Serialize, Deserialize)] +struct Channel { + username: String, + follower_list: Vec, + banned_list: Vec, +} + + +async fn establish_connection() -> Surreal{ + let db = Surreal::new::("127.0.0.1:8000").await.unwrap(); + + db.signin(Root { + username: "root", + password: "root", + }).await.unwrap(); + + db.use_ns("test").use_db("test").await.unwrap(); + db +} + +async fn create_channel(username:&String, db:&Surreal) -> Option>{ + match search_channel(username, db).await { + Some(_) => { + println!("Already Exists"); + return None; + }, + None => { + let created: Vec = db.create("channel").content(Channel { + username:username.to_string(), + follower_list: vec![], + banned_list: vec![], + }).await.unwrap(); + return Some(created); + }, + } +} + +async fn delete_channel(username:&String, db:&Surreal) -> Option { + match search_channel(username, db).await { + Some(channel) => { + let deleted: Option = db.delete(("channel", channel.username)).await.unwrap(); + return deleted; + } + None => { + println!("Not Exists"); + return None; + } + } +} + +async fn search_channel(username:&String, db:&Surreal) -> Option { + let searched: Option = db.select(("channel", username)).await.unwrap(); + searched +} + +async fn update_channel(){} +async fn add_follower(){} +async fn remove_follewer(){} +async fn ban_user(){} +async fn unban_user(){} + +