feat: 🗃️ connect,create, search, delete
This commit is contained in:
parent
4c68348d4e
commit
cad0cc7317
2 changed files with 66 additions and 0 deletions
|
@ -10,5 +10,6 @@ axum = "0.7.5"
|
||||||
axum-server = { version = "0.6.0", features = ["tls-rustls"] }
|
axum-server = { version = "0.6.0", features = ["tls-rustls"] }
|
||||||
serde = { version = "1.0.197", features = ["derive"] }
|
serde = { version = "1.0.197", features = ["derive"] }
|
||||||
serde_json = "1.0.115"
|
serde_json = "1.0.115"
|
||||||
|
surrealdb = "1.3.1"
|
||||||
tokio = { version = "1.36.0", features = ["full"] }
|
tokio = { version = "1.36.0", features = ["full"] }
|
||||||
tower-http = { version = "0.5.2", features = ["full"] }
|
tower-http = { version = "0.5.2", features = ["full"] }
|
||||||
|
|
65
src/db.rs
65
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<String>,
|
||||||
|
banned_list: Vec<String>,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
async fn establish_connection() -> Surreal<Client>{
|
||||||
|
let db = Surreal::new::<Ws>("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<Client>) -> Option<Vec<Channel>>{
|
||||||
|
match search_channel(username, db).await {
|
||||||
|
Some(_) => {
|
||||||
|
println!("Already Exists");
|
||||||
|
return None;
|
||||||
|
},
|
||||||
|
None => {
|
||||||
|
let created: Vec<Channel> = 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<Client>) -> Option<Channel> {
|
||||||
|
match search_channel(username, db).await {
|
||||||
|
Some(channel) => {
|
||||||
|
let deleted: Option<Channel> = db.delete(("channel", channel.username)).await.unwrap();
|
||||||
|
return deleted;
|
||||||
|
}
|
||||||
|
None => {
|
||||||
|
println!("Not Exists");
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn search_channel(username:&String, db:&Surreal<Client>) -> Option<Channel> {
|
||||||
|
let searched: Option<Channel> = 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(){}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue