From b7102e12a6c1ae99cd79d83af872ef79d56d2651 Mon Sep 17 00:00:00 2001 From: Joshua Coles Date: Sun, 3 Mar 2024 20:53:41 +0000 Subject: [PATCH] Run `rustfmt` and fix some clippy lints --- src/db.rs | 10 +++++--- src/poll.rs | 27 +++++--------------- src/routes.rs | 50 ++++++++++++++++++------------------- src/sync_service.rs | 29 ++++++++++----------- src/toggl_api/api_client.rs | 10 +++++--- 5 files changed, 56 insertions(+), 70 deletions(-) diff --git a/src/db.rs b/src/db.rs index 370db3b..178758b 100644 --- a/src/db.rs +++ b/src/db.rs @@ -5,7 +5,8 @@ use sea_orm::{NotSet, Set}; impl ReportRow { pub fn to_time_entries(&self, workspace_id: i64) -> Vec { - self.time_entries.iter() + self.time_entries + .iter() .map(|inner| TimeEntry { id: inner.id as i64, description: self.description.clone(), @@ -21,7 +22,8 @@ impl ReportRow { duration: inner.seconds as i64, tag_ids: self.tag_ids.iter().map(|ids| *ids as i64).collect(), user_id: self.user_id as i64, - }).collect() + }) + .collect() } } @@ -62,10 +64,10 @@ impl Client { client::ActiveModel { id: Set(self.id), name: Set(self.name.clone()), - archived: Set(self.archived.clone()), + archived: Set(self.archived), workspace_id: Set(self.wid), at: Set(self.at.clone().fixed_offset()), - server_deleted_at: Set(self.server_deleted_at.clone().map(|dt| dt.fixed_offset())), + server_deleted_at: Set(self.server_deleted_at.map(|dt| dt.fixed_offset())), } } diff --git a/src/poll.rs b/src/poll.rs index 145a5d5..aec7c84 100644 --- a/src/poll.rs +++ b/src/poll.rs @@ -1,19 +1,12 @@ -use crate::entity::prelude::TimeEntry; -use crate::entity::{client, project, time_entry}; -use crate::toggl_api::types::{Client, Project, TogglReportQuery}; +use crate::entity::time_entry; +use crate::sync_service::{update_database, UpdateStats}; use crate::toggl_api::TogglApiClient; use crate::utils; -use crate::utils::day_exclusivity_condition; use chrono::{DateTime, FixedOffset}; -use sea_orm::DatabaseBackend::Postgres; -use sea_orm::{ - ConnectionTrait, DatabaseConnection, EntityOrSelect, EntityTrait, QueryOrder, QuerySelect, - Statement, -}; -use std::ops::Sub; use migration::Order; +use sea_orm::{DatabaseConnection, EntityTrait, QueryOrder, QuerySelect}; +use std::ops::Sub; use tracing::instrument; -use crate::sync_service::{update_database, UpdateStats}; #[tracing::instrument(skip(client, db))] pub async fn poll_job(client: TogglApiClient, db: DatabaseConnection, poll_period: u64) { @@ -24,10 +17,7 @@ pub async fn poll_job(client: TogglApiClient, db: DatabaseConnection, poll_perio tracing::info!("Polling Toggl API"); match perform_poll(&client, &db).await { Ok(poll_update_data) => { - tracing::info!( - "Successfully polled Toggl API: {:?}", - poll_update_data - ); + tracing::info!("Successfully polled Toggl API: {:?}", poll_update_data); } Err(error) => { @@ -63,10 +53,5 @@ pub async fn perform_poll( .await?; // These are changes only so there is no need to enforce exclusivity - update_database( - db, - toggl_client, - &time_entries, - None, - ).await + update_database(db, toggl_client, &time_entries, None).await } diff --git a/src/routes.rs b/src/routes.rs index e609157..967d5b6 100644 --- a/src/routes.rs +++ b/src/routes.rs @@ -1,3 +1,4 @@ +use crate::sync_service::UpdateStats; use crate::toggl_api::types::{self, Client, Project, ReportRow, TogglReportQuery}; use crate::toggl_api::TogglApiClient; use crate::{entity, sync_service, utils}; @@ -11,8 +12,7 @@ use sea_orm::{DatabaseConnection, EntityTrait}; use serde::Deserialize; use serde_json::Value; use std::collections::HashMap; -use tracing::{instrument}; -use crate::sync_service::UpdateStats; +use tracing::instrument; #[instrument(skip(db, toggl_client))] pub async fn report( @@ -21,13 +21,11 @@ pub async fn report( Json(query): Json, ) -> utils::Result>> { let report = toggl_client.full_report(&query).await?; - let time_entries = report.iter().flat_map(|entry| entry.to_time_entries(toggl_client.workspace_id())).collect::>(); - sync_service::update_database( - &db, - &toggl_client, - &time_entries, - None, - ).await?; + let time_entries = report + .iter() + .flat_map(|entry| entry.to_time_entries(toggl_client.workspace_id())) + .collect::>(); + sync_service::update_database(&db, &toggl_client, &time_entries, None).await?; Ok(Json(report)) } @@ -36,7 +34,7 @@ pub async fn report( pub async fn current( Extension(toggl_client): Extension, ) -> utils::Result>> { - Ok(toggl_client.fetch_current_time_entry().await.map(Json)?) + toggl_client.fetch_current_time_entry().await.map(Json) } #[instrument(skip(toggl_client))] @@ -81,11 +79,11 @@ pub async fn clients( pub async fn health( Extension(toggl_client): Extension, ) -> utils::Result<&'static str> { - return if toggl_client.check_health().await { + if toggl_client.check_health().await { Ok("Ok") } else { - Err(anyhow!("Panopto health check failed").into()) - }; + Err(anyhow!("Toggl health check failed").into()) + } } pub async fn import_csv( @@ -119,31 +117,33 @@ pub struct RefreshQuery { pub async fn refresh( Extension(toggl_client): Extension, Extension(db): Extension, - Query(RefreshQuery { start_date, end_date }): Query, + Query(RefreshQuery { + start_date, + end_date, + }): Query, ) -> utils::Result> { let time_entries = match (start_date, end_date) { (Some(start_date), Some(end_date)) => { - toggl_client.fetch_time_entries_in_range(start_date, end_date).await? + toggl_client + .fetch_time_entries_in_range(start_date, end_date) + .await? } (Some(start_date), None) => { let end_date = Utc::now(); - toggl_client.fetch_time_entries_in_range(start_date, end_date).await? + toggl_client + .fetch_time_entries_in_range(start_date, end_date) + .await? } (None, Some(_)) => { return Err(anyhow!("start_date must be provided if end_date is provided").into()); } - _ => { - toggl_client.fetch_recent_time_entries().await? - } + _ => toggl_client.fetch_recent_time_entries().await?, }; - sync_service::update_database( - &db, - &toggl_client, - &time_entries, - None, - ).await.map(Json) + sync_service::update_database(&db, &toggl_client, &time_entries, None) + .await + .map(Json) } diff --git a/src/sync_service.rs b/src/sync_service.rs index fb6657f..ec32df2 100644 --- a/src/sync_service.rs +++ b/src/sync_service.rs @@ -1,11 +1,11 @@ -use crate::entity::{client, project, time_entry}; use crate::entity::time_entry::Entity as TimeEntry; -use crate::toggl_api::types::{Client, Project, ReportRow, TimeEntry as ToggleApiTimeEntry}; +use crate::entity::{client, project, time_entry}; +use crate::toggl_api::types::{Client, Project, TimeEntry as ToggleApiTimeEntry}; +use crate::toggl_api::TogglApiClient; use crate::utils; use migration::Condition; use sea_orm::{ColumnTrait, DatabaseConnection, EntityTrait, QueryFilter, QuerySelect}; use serde::Serialize; -use crate::toggl_api::TogglApiClient; #[derive(Debug, Serialize)] pub struct UpdateStats { @@ -39,7 +39,8 @@ pub async fn update_database( deleted: 0, }; - let deleted_ids = deleted_entries.iter() + let deleted_ids = deleted_entries + .iter() .map(|entry| entry.id) .collect::>(); @@ -62,7 +63,7 @@ pub async fn update_database( let new_projects = time_entries .iter() .filter_map(|entry| entry.project_id) - .any(|project_id| !existing_project_ids.contains(&(project_id as i64))); + .any(|project_id| !existing_project_ids.contains(&project_id)); if new_projects { let clients = toggl_client.fetch_clients().await?; @@ -80,20 +81,19 @@ pub async fn update_database( .await?; } - let ids = time_entries.iter() + let ids = time_entries + .iter() .map(|entry| entry.id) .collect::>(); - let models = time_entries.into_iter() + let models = time_entries + .into_iter() .map(|entry| entry.as_model()) .collect::>(); // TODO: Why is this needed? if models.is_empty() { - return Ok(UpdateStats { - retrieved, - written, - }); + return Ok(UpdateStats { retrieved, written }); } let insert_result = TimeEntry::insert_many(models) @@ -114,8 +114,5 @@ pub async fn update_database( .await?; } - Ok(UpdateStats { - retrieved, - written, - }) -} \ No newline at end of file + Ok(UpdateStats { retrieved, written }) +} diff --git a/src/toggl_api/api_client.rs b/src/toggl_api/api_client.rs index 2d79539..bbb1334 100644 --- a/src/toggl_api/api_client.rs +++ b/src/toggl_api/api_client.rs @@ -49,7 +49,7 @@ impl TogglApiClient { } pub fn new(workspace_id: &str, api_token: &str) -> Self { - let toggl_auth = &STANDARD.encode(&format!("{}:api_token", api_token)); + let toggl_auth = &STANDARD.encode(format!("{}:api_token", api_token)); let client = Client::builder() .default_headers(Self::default_headers(toggl_auth)) @@ -107,7 +107,8 @@ impl TogglApiClient { pub async fn fetch_recent_time_entries(&self) -> crate::Result> { let url = format!("{base_url}/me/time_entries", base_url = self.base_url); - Ok(self.make_request(self.client.get(url)) + Ok(self + .make_request(self.client.get(url)) .await? .json::>() .await?) @@ -132,7 +133,8 @@ impl TogglApiClient { pub async fn fetch_time_entries_in_range( &self, - start: DateTime, end: DateTime, + start: DateTime, + end: DateTime, ) -> crate::Result> { let url = format!("{base_url}/me/time_entries", base_url = self.base_url); @@ -211,7 +213,7 @@ impl TogglApiClient { .make_request( self.client .post(&url) - .json(&Self::paginate_filters(&filters, last_row_number_n)), + .json(&Self::paginate_filters(filters, last_row_number_n)), ) .await?;