mirror of
				https://gitlab.com/comunic/comunicapiv3
				synced 2025-11-04 09:34:04 +00:00 
			
		
		
		
	Can update like status of user page
This commit is contained in:
		
							
								
								
									
										41
									
								
								src/controllers/likes_controller.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								src/controllers/likes_controller.rs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,41 @@
 | 
			
		||||
//! # Likes controller
 | 
			
		||||
//!
 | 
			
		||||
//! @author Pierre Hubert
 | 
			
		||||
 | 
			
		||||
use crate::controllers::routes::RequestResult;
 | 
			
		||||
use crate::data::http_request_handler::HttpRequestHandler;
 | 
			
		||||
use crate::data::error::ExecError;
 | 
			
		||||
use crate::helpers::likes_helper::LikeType;
 | 
			
		||||
use crate::helpers::{user_helper, likes_helper};
 | 
			
		||||
 | 
			
		||||
struct LikeTarget(u64, LikeType);
 | 
			
		||||
 | 
			
		||||
/// Update like status
 | 
			
		||||
pub fn update(r: &mut HttpRequestHandler) -> RequestResult {
 | 
			
		||||
    let req_type = r.post_string("type")?;
 | 
			
		||||
    let is_liking = r.post_bool("like")?;
 | 
			
		||||
 | 
			
		||||
    let target = match req_type.as_str() {
 | 
			
		||||
 | 
			
		||||
        // In case of user
 | 
			
		||||
        "user" => {
 | 
			
		||||
            let user_id = r.post_user_id("id")?;
 | 
			
		||||
 | 
			
		||||
            if !user_helper::can_see_user_page(&r.user_id_or_invalid(), &user_id)? {
 | 
			
		||||
                r.forbidden("You cannot access this user information!".to_string())?;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            LikeTarget(user_id.id(), LikeType::USER)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        _ => {
 | 
			
		||||
            r.internal_error(ExecError::boxed_new("Unsupported like type!"))?;
 | 
			
		||||
            unreachable!();
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    likes_helper::update(r.user_id_ref()?, is_liking, target.0, target.1)?;
 | 
			
		||||
 | 
			
		||||
    r.success("")
 | 
			
		||||
}
 | 
			
		||||
@@ -10,5 +10,6 @@ pub mod search_controller;
 | 
			
		||||
pub mod groups_controller;
 | 
			
		||||
pub mod posts_controller;
 | 
			
		||||
pub mod comments_controller;
 | 
			
		||||
pub mod likes_controller;
 | 
			
		||||
pub mod movies_controller;
 | 
			
		||||
pub mod virtual_directory_controller;
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
use std::error::Error;
 | 
			
		||||
 | 
			
		||||
use crate::controllers::{account_controller, comments_controller, conversations_controller, friends_controller, groups_controller, movies_controller, posts_controller, search_controller, server_controller, user_controller, virtual_directory_controller};
 | 
			
		||||
use crate::controllers::{account_controller, comments_controller, conversations_controller, friends_controller, groups_controller, likes_controller, movies_controller, posts_controller, search_controller, server_controller, user_controller, virtual_directory_controller};
 | 
			
		||||
use crate::controllers::routes::Method::{GET, POST};
 | 
			
		||||
use crate::data::http_request_handler::HttpRequestHandler;
 | 
			
		||||
 | 
			
		||||
@@ -228,6 +228,9 @@ pub fn get_routes() -> Vec<Route> {
 | 
			
		||||
        Route::post("/comments/delete", Box::new(comments_controller::delete)),
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        // Likes controller
 | 
			
		||||
        Route::post("/likes/update", Box::new(likes_controller::update)),
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        // Movies controller
 | 
			
		||||
        Route::post("/movies/get_list", Box::new(movies_controller::get_list)),
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user