Update calendar last access
This commit is contained in:
		| @@ -145,3 +145,6 @@ pub const THUMB_HEIGHT: u32 = 350; | ||||
|  | ||||
| /// Accommodations reservations calendars tokens len | ||||
| pub const ACCOMMODATIONS_RESERVATIONS_CALENDARS_TOKENS_LEN: usize = 50; | ||||
|  | ||||
| /// Minimum interval before calendar used time update | ||||
| pub const TIME_USED_UPDATE_MIN_INTERVAL: Duration = Duration::from_secs(60); | ||||
|   | ||||
| @@ -12,6 +12,7 @@ use crate::services::{ | ||||
|     accommodations_list_service, accommodations_reservations_calendars_service, | ||||
|     accommodations_reservations_service, families_service, | ||||
| }; | ||||
| use crate::utils::time_utils::time; | ||||
|  | ||||
| #[derive(serde::Deserialize)] | ||||
| pub struct CreateCalendarQuery { | ||||
| @@ -95,7 +96,7 @@ pub struct AnonymousAccessURL { | ||||
|  | ||||
| /// Get the content of the calendar | ||||
| pub async fn anonymous_access(req: web::Path<AnonymousAccessURL>) -> HttpResult { | ||||
|     let calendar = | ||||
|     let mut calendar = | ||||
|         match accommodations_reservations_calendars_service::get_by_token(&req.token).await { | ||||
|             Ok(c) => c, | ||||
|             Err(e) => { | ||||
| @@ -151,7 +152,10 @@ pub async fn anonymous_access(req: web::Path<AnonymousAccessURL>) -> HttpResult | ||||
|         cal.events.push(event); | ||||
|     } | ||||
|  | ||||
|     // TODO : update last used of calendar, if required | ||||
|     if calendar.should_update_last_used() { | ||||
|         calendar.time_used = time() as i64; | ||||
|         accommodations_reservations_calendars_service::update(&calendar).await?; | ||||
|     } | ||||
|  | ||||
|     Ok(HttpResponse::Ok() | ||||
|         .content_type("text/calendar") | ||||
|   | ||||
| @@ -1,9 +1,11 @@ | ||||
| use crate::app_config::AppConfig; | ||||
| use crate::constants; | ||||
| use crate::schema::{ | ||||
|     accommodations_list, accommodations_reservations, accommodations_reservations_cals_urls, | ||||
|     couples, families, members, memberships, photos, users, | ||||
| }; | ||||
| use crate::utils::crypt_utils::sha256; | ||||
| use crate::utils::time_utils::time; | ||||
| use diesel::prelude::*; | ||||
|  | ||||
| /// User ID holder | ||||
| @@ -575,6 +577,10 @@ impl AccommodationReservationCalendar { | ||||
|     pub fn user_id(&self) -> UserID { | ||||
|         UserID(self.user_id) | ||||
|     } | ||||
|  | ||||
|     pub fn should_update_last_used(&self) -> bool { | ||||
|         (self.time_used + constants::TIME_USED_UPDATE_MIN_INTERVAL.as_secs() as i64) < time() as i64 | ||||
|     } | ||||
| } | ||||
|  | ||||
| #[derive(Insertable)] | ||||
|   | ||||
| @@ -34,6 +34,20 @@ pub async fn create( | ||||
|     }) | ||||
| } | ||||
|  | ||||
| /// Update the information of a reservations calendar | ||||
| pub async fn update(cal: &AccommodationReservationCalendar) -> anyhow::Result<()> { | ||||
|     db_connection::execute(|conn| { | ||||
|         diesel::update( | ||||
|             accommodations_reservations_cals_urls::dsl::accommodations_reservations_cals_urls | ||||
|                 .filter(accommodations_reservations_cals_urls::dsl::id.eq(cal.id().0)), | ||||
|         ) | ||||
|         .set((accommodations_reservations_cals_urls::dsl::time_used.eq(cal.time_used),)) | ||||
|         .execute(conn) | ||||
|     })?; | ||||
|  | ||||
|     Ok(()) | ||||
| } | ||||
|  | ||||
| /// Get all the calendars of a user | ||||
| pub async fn get_all_of_user( | ||||
|     user: UserID, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user