Rename TogglClient to TogglApiClient
This commit is contained in:
parent
82d9cf5c87
commit
1df76ea573
@ -8,7 +8,7 @@ use tracing::log::debug;
|
||||
use crate::types::{Current, Project, ProjectClient, ReportEntry, TogglQuery};
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct TogglClient {
|
||||
pub struct TogglApiClient {
|
||||
client: Client,
|
||||
workspace_id: String,
|
||||
base_url: String,
|
||||
@ -17,7 +17,7 @@ pub struct TogglClient {
|
||||
headers: HeaderMap,
|
||||
}
|
||||
|
||||
impl TogglClient {
|
||||
impl TogglApiClient {
|
||||
pub async fn check_health(&self) -> bool {
|
||||
true
|
||||
}
|
||||
20
src/main.rs
20
src/main.rs
@ -1,4 +1,4 @@
|
||||
use crate::client::TogglClient;
|
||||
use crate::api_client::TogglApiClient;
|
||||
use crate::entity::prelude::TimeEntry;
|
||||
use crate::entity::time_entry;
|
||||
use crate::entity::time_entry::ActiveModel;
|
||||
@ -25,7 +25,7 @@ use std::net::SocketAddr;
|
||||
use tower_http::trace::TraceLayer;
|
||||
use tracing::{debug, instrument};
|
||||
|
||||
mod client;
|
||||
mod api_client;
|
||||
mod db;
|
||||
mod entity;
|
||||
mod poll;
|
||||
@ -54,7 +54,7 @@ struct Config {
|
||||
|
||||
#[instrument(skip(db, toggl_client))]
|
||||
pub async fn report(
|
||||
Extension(toggl_client): Extension<TogglClient>,
|
||||
Extension(toggl_client): Extension<TogglApiClient>,
|
||||
Extension(db): Extension<DatabaseConnection>,
|
||||
Json(query): Json<TogglQuery>,
|
||||
) -> Result<Json<Vec<ReportEntry>>> {
|
||||
@ -107,14 +107,14 @@ async fn cache_report(
|
||||
|
||||
#[instrument(skip(toggl_client))]
|
||||
pub async fn current(
|
||||
Extension(toggl_client): Extension<TogglClient>,
|
||||
Extension(toggl_client): Extension<TogglApiClient>,
|
||||
) -> Result<Json<Option<Current>>> {
|
||||
Ok(toggl_client.get_current().await.map(Json)?)
|
||||
}
|
||||
|
||||
#[instrument(skip(toggl_client))]
|
||||
pub async fn start_time_entry(
|
||||
Extension(toggl_client): Extension<TogglClient>,
|
||||
Extension(toggl_client): Extension<TogglApiClient>,
|
||||
Json(body): Json<HashMap<String, Value>>,
|
||||
) -> Result<impl IntoResponse> {
|
||||
toggl_client.start_time_entry(body).await?;
|
||||
@ -125,7 +125,7 @@ pub async fn start_time_entry(
|
||||
#[instrument(skip(db, toggl_client))]
|
||||
async fn projects(
|
||||
Extension(db): Extension<DatabaseConnection>,
|
||||
Extension(toggl_client): Extension<TogglClient>,
|
||||
Extension(toggl_client): Extension<TogglApiClient>,
|
||||
) -> Result<Json<Vec<Project>>> {
|
||||
let projects = toggl_client.fetch_projects().await?;
|
||||
|
||||
@ -140,7 +140,7 @@ async fn projects(
|
||||
#[instrument(skip(toggl_client, db))]
|
||||
async fn clients(
|
||||
Extension(db): Extension<DatabaseConnection>,
|
||||
Extension(toggl_client): Extension<TogglClient>,
|
||||
Extension(toggl_client): Extension<TogglApiClient>,
|
||||
) -> Result<Json<Vec<ProjectClient>>> {
|
||||
let clients = toggl_client.fetch_clients().await?;
|
||||
entity::client::Entity::insert_many(clients.iter().map(ProjectClient::as_model))
|
||||
@ -151,7 +151,7 @@ async fn 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 {
|
||||
Ok("Ok")
|
||||
} else {
|
||||
@ -166,7 +166,7 @@ struct RefreshQuery {
|
||||
|
||||
#[instrument(skip(toggl_client, db))]
|
||||
async fn refresh(
|
||||
Extension(toggl_client): Extension<TogglClient>,
|
||||
Extension(toggl_client): Extension<TogglApiClient>,
|
||||
Extension(db): Extension<DatabaseConnection>,
|
||||
Query(RefreshQuery { start_date }): Query<RefreshQuery>,
|
||||
) -> Result<&'static str> {
|
||||
@ -228,7 +228,7 @@ async fn main() -> Result<()> {
|
||||
tracing_subscriber::fmt::init();
|
||||
|
||||
let config = Config::parse();
|
||||
let toggl_client = TogglClient::new(
|
||||
let toggl_client = TogglApiClient::new(
|
||||
&config.workspace_id.to_string(),
|
||||
&STANDARD.encode(&format!("{}:api_token", config.toggl_api_token)),
|
||||
);
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
use crate::client::TogglClient;
|
||||
use crate::api_client::TogglApiClient;
|
||||
use crate::entity::{client, project, time_entry};
|
||||
use crate::types::{Project, ProjectClient, TogglQuery};
|
||||
use sea_orm::{DatabaseConnection, EntityTrait, QuerySelect};
|
||||
@ -6,7 +6,7 @@ use tracing::instrument;
|
||||
use crate::{day_exclusivity_condition, utils};
|
||||
|
||||
#[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
|
||||
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))]
|
||||
pub async fn perform_poll(
|
||||
client: &TogglClient,
|
||||
client: &TogglApiClient,
|
||||
db: &DatabaseConnection,
|
||||
) -> utils::Result<usize> {
|
||||
let now = chrono::Utc::now();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user