1
0
mirror of https://gitlab.com/comunic/comunicapiv3 synced 2024-11-22 21:39:21 +00:00

Automatically clean old notifications

This commit is contained in:
Pierre HUBERT 2021-02-14 16:56:48 +01:00
parent 664824ff48
commit 7876c37330
2 changed files with 19 additions and 4 deletions

View File

@ -6,7 +6,7 @@
use crate::constants::CLEAN_UP_INTERVAL; use crate::constants::CLEAN_UP_INTERVAL;
use crate::data::error::Res; use crate::data::error::Res;
use crate::helpers::{account_helper, user_helper, likes_helper}; use crate::helpers::{account_helper, likes_helper, notifications_helper, user_helper};
/// Start the maintenance thread /// Start the maintenance thread
pub fn start() -> Res { pub fn start() -> Res {
@ -44,7 +44,8 @@ fn do_clean() -> Res {
// Clean old likes // Clean old likes
likes_helper::clean_old_user_likes(&user)?; likes_helper::clean_old_user_likes(&user)?;
// Clean old notifications
notifications_helper::clean_old_user_notifications(&user)?;
} }

View File

@ -5,15 +5,16 @@
use std::collections::HashMap; use std::collections::HashMap;
use crate::constants::database_tables_names::NOTIFICATIONS_TABLE; use crate::constants::database_tables_names::NOTIFICATIONS_TABLE;
use crate::data::error::{ExecError, ResultBoxError}; use crate::data::error::{ExecError, Res, ResultBoxError};
use crate::data::group_id::GroupID; use crate::data::group_id::GroupID;
use crate::data::notification::{NotifElemType, NotifEventType, NotifEventVisibility, Notification, PartialNotification}; use crate::data::notification::{NotifElemType, NotifEventType, NotifEventVisibility, Notification, PartialNotification};
use crate::data::post::{PostID, PostPageKind, PostVisibilityLevel}; use crate::data::post::{PostID, PostPageKind, PostVisibilityLevel};
use crate::data::user::UserID; use crate::data::user::{User, UserID};
use crate::helpers::{database, events_helper, groups_helper, posts_helper}; use crate::helpers::{database, events_helper, groups_helper, posts_helper};
use crate::helpers::events_helper::Event; use crate::helpers::events_helper::Event;
use crate::helpers::friends_helper::GetFriendsQuery; use crate::helpers::friends_helper::GetFriendsQuery;
use crate::utils::date_utils; use crate::utils::date_utils;
use crate::utils::date_utils::time;
/// Create post notification /// Create post notification
pub fn create_post_notification(from_user: &UserID, post_id: u64, action: NotifEventType) -> ResultBoxError { pub fn create_post_notification(from_user: &UserID, post_id: u64, action: NotifEventType) -> ResultBoxError {
@ -272,6 +273,19 @@ pub fn delete_all_related_with_user(user_id: &UserID) -> ResultBoxError {
Ok(()) Ok(())
} }
/// Delete all the old notifications of a user
pub fn clean_old_user_notifications(user: &User) -> Res {
if user.delete_notifications_after < 1 {
return Ok(());
}
database::DeleteQuery::new(NOTIFICATIONS_TABLE)
.cond_user_id("dest_user_id", &user.id)
.set_custom_where("time_create < ?")
.add_custom_where_arg_u64(time() - user.delete_notifications_after)
.exec()
}
/// Delete all the notifications related with a group /// Delete all the notifications related with a group
pub fn delete_all_related_with_group(group_id: &GroupID) -> ResultBoxError { pub fn delete_all_related_with_group(group_id: &GroupID) -> ResultBoxError {
delete(&PartialNotification::new() delete(&PartialNotification::new()