mirror of
				https://gitlab.com/comunic/comunicapiv3
				synced 2025-10-31 07:34:45 +00:00 
			
		
		
		
	Add the method /notifications/count_all_news
This commit is contained in:
		| @@ -38,4 +38,5 @@ pub mod comment_api; | ||||
| pub mod res_create_post; | ||||
| pub mod posts_targets_api; | ||||
| pub mod res_create_comment; | ||||
| pub mod res_number_unread_notifications; | ||||
| pub mod res_number_unread_notifications; | ||||
| pub mod res_count_all_unreads; | ||||
							
								
								
									
										30
									
								
								src/api_data/res_count_all_unreads.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								src/api_data/res_count_all_unreads.rs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | ||||
| //! # Count unread notifications & conversation | ||||
| //! | ||||
| //! Optionally includes friendship requests too | ||||
| //! | ||||
| //! @author Pierre Hubert | ||||
| use serde::Serialize; | ||||
|  | ||||
| #[derive(Serialize)] | ||||
| struct CountFriendsRequests { | ||||
|     friends_requests: u64, | ||||
| } | ||||
|  | ||||
| #[derive(Serialize)] | ||||
| pub struct ResCountAllUnread { | ||||
|     notifications: u64, | ||||
|     conversations: u64, | ||||
|  | ||||
|     #[serde(flatten)] | ||||
|     friends: Option<CountFriendsRequests>, | ||||
| } | ||||
|  | ||||
| impl ResCountAllUnread { | ||||
|     pub fn new(notifications: u64, conversations: u64, friends_requests: Option<u64>) -> ResCountAllUnread { | ||||
|         ResCountAllUnread { | ||||
|             notifications, | ||||
|             conversations, | ||||
|             friends: friends_requests.map(|n| CountFriendsRequests { friends_requests: n }), | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -2,13 +2,26 @@ | ||||
| //! | ||||
| //! @author Pierre Hubert | ||||
|  | ||||
| use crate::api_data::res_count_all_unreads::ResCountAllUnread; | ||||
| use crate::api_data::res_number_unread_notifications::ResNumberUnreadNotifications; | ||||
| use crate::controllers::routes::RequestResult; | ||||
| use crate::data::http_request_handler::HttpRequestHandler; | ||||
| use crate::helpers::notifications_helper; | ||||
| use crate::helpers::{conversations_helper, friends_helper, notifications_helper}; | ||||
|  | ||||
| /// Count the number of unread notifications | ||||
| pub fn count_unread(r: &mut HttpRequestHandler) -> RequestResult { | ||||
|     let number = notifications_helper::count_unread(r.user_id_ref()?)?; | ||||
|     r.set_response(ResNumberUnreadNotifications::new(number)) | ||||
| } | ||||
|  | ||||
| /// Count the number of unread notifications | ||||
| pub fn count_all_news(r: &mut HttpRequestHandler) -> RequestResult { | ||||
|     let notifications = notifications_helper::count_unread(r.user_id_ref()?)?; | ||||
|     let conversations = conversations_helper::count_unread_for_user(r.user_id_ref()?)?; | ||||
|     let friends_requests = match r.post_bool_opt("friends_request", false) { | ||||
|         true => Some(friends_helper::count_requests(r.user_id_ref()?)?), | ||||
|         false => None | ||||
|     }; | ||||
|  | ||||
|     r.set_response(ResCountAllUnread::new(notifications, conversations as u64, friends_requests)) | ||||
| } | ||||
| @@ -247,6 +247,8 @@ pub fn get_routes() -> Vec<Route> { | ||||
|         // Notifications controller | ||||
|         Route::post("/notifications/count_unread", Box::new(notifications_controller::count_unread)), | ||||
|  | ||||
|         Route::post("/notifications/count_all_news", Box::new(notifications_controller::count_all_news)), | ||||
|  | ||||
|         // Movies controller | ||||
|         Route::post("/movies/get_list", Box::new(movies_controller::get_list)), | ||||
|  | ||||
|   | ||||
| @@ -238,6 +238,15 @@ pub fn get_status(user_id: &UserID, friend_id: &UserID) -> ResultBoxError<Friend | ||||
|     Ok(status) | ||||
| } | ||||
|  | ||||
| /// Count the number of friendship requests of a user | ||||
| pub fn count_requests(user_id: &UserID) -> ResultBoxError<u64> { | ||||
|     database::QueryInfo::new(FRIENDS_TABLE) | ||||
|         .cond_user_id("ID_personne", user_id) | ||||
|         .cond_legacy_bool("actif", false) | ||||
|         .exec_count() | ||||
|         .map(|r| r as u64) | ||||
| } | ||||
|  | ||||
| /// Turn a database entry into a Friend structure | ||||
| fn db_to_friend(row: &database::RowResult) -> ResultBoxError<Friend> { | ||||
|     Ok(Friend { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user