Rename TogglClient to TogglApiClient

This commit is contained in:
Joshua Coles 2024-03-01 21:18:16 +00:00
parent 82d9cf5c87
commit 1df76ea573
3 changed files with 15 additions and 15 deletions

View File

@ -8,7 +8,7 @@ use tracing::log::debug;
use crate::types::{Current, Project, ProjectClient, ReportEntry, TogglQuery}; use crate::types::{Current, Project, ProjectClient, ReportEntry, TogglQuery};
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
pub struct TogglClient { pub struct TogglApiClient {
client: Client, client: Client,
workspace_id: String, workspace_id: String,
base_url: String, base_url: String,
@ -17,7 +17,7 @@ pub struct TogglClient {
headers: HeaderMap, headers: HeaderMap,
} }
impl TogglClient { impl TogglApiClient {
pub async fn check_health(&self) -> bool { pub async fn check_health(&self) -> bool {
true true
} }

View File

@ -1,4 +1,4 @@
use crate::client::TogglClient; use crate::api_client::TogglApiClient;
use crate::entity::prelude::TimeEntry; use crate::entity::prelude::TimeEntry;
use crate::entity::time_entry; use crate::entity::time_entry;
use crate::entity::time_entry::ActiveModel; use crate::entity::time_entry::ActiveModel;
@ -25,7 +25,7 @@ use std::net::SocketAddr;
use tower_http::trace::TraceLayer; use tower_http::trace::TraceLayer;
use tracing::{debug, instrument}; use tracing::{debug, instrument};
mod client; mod api_client;
mod db; mod db;
mod entity; mod entity;
mod poll; mod poll;
@ -54,7 +54,7 @@ struct Config {
#[instrument(skip(db, toggl_client))] #[instrument(skip(db, toggl_client))]
pub async fn report( pub async fn report(
Extension(toggl_client): Extension<TogglClient>, Extension(toggl_client): Extension<TogglApiClient>,
Extension(db): Extension<DatabaseConnection>, Extension(db): Extension<DatabaseConnection>,
Json(query): Json<TogglQuery>, Json(query): Json<TogglQuery>,
) -> Result<Json<Vec<ReportEntry>>> { ) -> Result<Json<Vec<ReportEntry>>> {
@ -107,14 +107,14 @@ async fn cache_report(
#[instrument(skip(toggl_client))] #[instrument(skip(toggl_client))]
pub async fn current( pub async fn current(
Extension(toggl_client): Extension<TogglClient>, Extension(toggl_client): Extension<TogglApiClient>,
) -> Result<Json<Option<Current>>> { ) -> Result<Json<Option<Current>>> {
Ok(toggl_client.get_current().await.map(Json)?) Ok(toggl_client.get_current().await.map(Json)?)
} }
#[instrument(skip(toggl_client))] #[instrument(skip(toggl_client))]
pub async fn start_time_entry( pub async fn start_time_entry(
Extension(toggl_client): Extension<TogglClient>, Extension(toggl_client): Extension<TogglApiClient>,
Json(body): Json<HashMap<String, Value>>, Json(body): Json<HashMap<String, Value>>,
) -> Result<impl IntoResponse> { ) -> Result<impl IntoResponse> {
toggl_client.start_time_entry(body).await?; toggl_client.start_time_entry(body).await?;
@ -125,7 +125,7 @@ pub async fn start_time_entry(
#[instrument(skip(db, toggl_client))] #[instrument(skip(db, toggl_client))]
async fn projects( async fn projects(
Extension(db): Extension<DatabaseConnection>, Extension(db): Extension<DatabaseConnection>,
Extension(toggl_client): Extension<TogglClient>, Extension(toggl_client): Extension<TogglApiClient>,
) -> Result<Json<Vec<Project>>> { ) -> Result<Json<Vec<Project>>> {
let projects = toggl_client.fetch_projects().await?; let projects = toggl_client.fetch_projects().await?;
@ -140,7 +140,7 @@ async fn projects(
#[instrument(skip(toggl_client, db))] #[instrument(skip(toggl_client, db))]
async fn clients( async fn clients(
Extension(db): Extension<DatabaseConnection>, Extension(db): Extension<DatabaseConnection>,
Extension(toggl_client): Extension<TogglClient>, Extension(toggl_client): Extension<TogglApiClient>,
) -> Result<Json<Vec<ProjectClient>>> { ) -> Result<Json<Vec<ProjectClient>>> {
let clients = toggl_client.fetch_clients().await?; let clients = toggl_client.fetch_clients().await?;
entity::client::Entity::insert_many(clients.iter().map(ProjectClient::as_model)) entity::client::Entity::insert_many(clients.iter().map(ProjectClient::as_model))
@ -151,7 +151,7 @@ async fn clients(
Ok(Json(clients)) Ok(Json(clients))
} }
async fn health(Extension(toggl_client): Extension<TogglClient>) -> Result<&'static str> { async fn health(Extension(toggl_client): Extension<TogglApiClient>) -> Result<&'static str> {
return if toggl_client.check_health().await { return if toggl_client.check_health().await {
Ok("Ok") Ok("Ok")
} else { } else {
@ -166,7 +166,7 @@ struct RefreshQuery {
#[instrument(skip(toggl_client, db))] #[instrument(skip(toggl_client, db))]
async fn refresh( async fn refresh(
Extension(toggl_client): Extension<TogglClient>, Extension(toggl_client): Extension<TogglApiClient>,
Extension(db): Extension<DatabaseConnection>, Extension(db): Extension<DatabaseConnection>,
Query(RefreshQuery { start_date }): Query<RefreshQuery>, Query(RefreshQuery { start_date }): Query<RefreshQuery>,
) -> Result<&'static str> { ) -> Result<&'static str> {
@ -228,7 +228,7 @@ async fn main() -> Result<()> {
tracing_subscriber::fmt::init(); tracing_subscriber::fmt::init();
let config = Config::parse(); let config = Config::parse();
let toggl_client = TogglClient::new( let toggl_client = TogglApiClient::new(
&config.workspace_id.to_string(), &config.workspace_id.to_string(),
&STANDARD.encode(&format!("{}:api_token", config.toggl_api_token)), &STANDARD.encode(&format!("{}:api_token", config.toggl_api_token)),
); );

View File

@ -1,4 +1,4 @@
use crate::client::TogglClient; use crate::api_client::TogglApiClient;
use crate::entity::{client, project, time_entry}; use crate::entity::{client, project, time_entry};
use crate::types::{Project, ProjectClient, TogglQuery}; use crate::types::{Project, ProjectClient, TogglQuery};
use sea_orm::{DatabaseConnection, EntityTrait, QuerySelect}; use sea_orm::{DatabaseConnection, EntityTrait, QuerySelect};
@ -6,7 +6,7 @@ use tracing::instrument;
use crate::{day_exclusivity_condition, utils}; use crate::{day_exclusivity_condition, utils};
#[tracing::instrument(skip(client, db))] #[tracing::instrument(skip(client, db))]
pub async fn poll_job(client: TogglClient, db: DatabaseConnection, poll_period: u64) { pub async fn poll_job(client: TogglApiClient, db: DatabaseConnection, poll_period: u64) {
// Every 2h, poll the Toggl API for new time entries for today to cache them in the database // Every 2h, poll the Toggl API for new time entries for today to cache them in the database
let period = tokio::time::Duration::from_secs(poll_period); let period = tokio::time::Duration::from_secs(poll_period);
@ -31,7 +31,7 @@ pub async fn poll_job(client: TogglClient, db: DatabaseConnection, poll_period:
#[instrument(skip(client, db))] #[instrument(skip(client, db))]
pub async fn perform_poll( pub async fn perform_poll(
client: &TogglClient, client: &TogglApiClient,
db: &DatabaseConnection, db: &DatabaseConnection,
) -> utils::Result<usize> { ) -> utils::Result<usize> {
let now = chrono::Utc::now(); let now = chrono::Utc::now();