diff --git a/Cargo.lock b/Cargo.lock index d44793f..9b6cba1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -484,7 +484,7 @@ dependencies = [ [[package]] name = "discoursio-presense" -version = "0.2.0" +version = "0.2.8" dependencies = [ "actix-web", "chrono", diff --git a/src/main.rs b/src/main.rs index b440a03..77e76d9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -57,7 +57,20 @@ async fn get_auth_id(token: &str) -> Result> { // Функция создает первый чат для пользователя. В чате два участника: пользователь и автор с идентификатором 1. // Данные чата сохраняются в Redis. async fn create_first_chat(author_id: i32, con: &mut redis::aio::Connection) -> Result, Box> { - // ... + let chat_id = Uuid::new_v4().to_string(); + let members = vec![author_id.to_string(), "1".to_string()]; + let timestamp = Utc::now().timestamp(); + + let chat = serde_json::json!({ + "id": chat_id.clone(), + "admins": members.clone(), + "members": members.clone(), + "title": "", + "createdBy": author_id, + "createdAt": timestamp, + "updatedAt": timestamp, + }); + let _: () = redis::pipe() .atomic() .cmd("SADD") @@ -70,6 +83,7 @@ async fn create_first_chat(author_id: i32, con: &mut redis::aio::Connection) -> .ignore() .query_async(con) .await?; + Ok(vec![chat.to_string()]) } @@ -104,7 +118,7 @@ async fn sse_handler( } }; - let chats: Vec = match con.smembers(format!("chats_by_author/{}", author_id)).await { + let chats: Vec = match con.smembers::>(format!("chats_by_author/{}", author_id)).await { Ok(chats) => { if chats.is_empty() { match create_first_chat(author_id, &mut con).await {