(toggl-portal): Add manul fresh endpoint
This commit is contained in:
parent
eca0a2cd44
commit
d5dfb47aea
33
src/main.rs
33
src/main.rs
@ -15,6 +15,8 @@ use sea_orm::{DatabaseConnection, EntityTrait};
|
||||
use serde_json::Value;
|
||||
use std::collections::HashMap;
|
||||
use std::net::SocketAddr;
|
||||
use axum::extract::Query;
|
||||
use serde::Deserialize;
|
||||
use tower_http::trace::TraceLayer;
|
||||
|
||||
mod client;
|
||||
@ -113,6 +115,36 @@ async fn health(Extension(toggl_client): Extension<TogglClient>) -> Result<&'sta
|
||||
};
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Deserialize)]
|
||||
struct RefreshQuery {
|
||||
start_date: Option<String>,
|
||||
}
|
||||
|
||||
async fn refresh(
|
||||
Extension(toggl_client): Extension<TogglClient>,
|
||||
Extension(db): Extension<DatabaseConnection>,
|
||||
Query(RefreshQuery { start_date }): Query<RefreshQuery>,
|
||||
) -> Result<&'static str> {
|
||||
let date = chrono::Utc::now()
|
||||
.naive_utc()
|
||||
.date()
|
||||
.format("%Y-%m-%d")
|
||||
.to_string();
|
||||
|
||||
let start_date = start_date.unwrap_or(date.clone());
|
||||
|
||||
let query = TogglQuery {
|
||||
start_date: Some(start_date),
|
||||
end_date: Some(date),
|
||||
..Default::default()
|
||||
};
|
||||
|
||||
let report = toggl_client.full_report(&query).await?;
|
||||
cache_report(&db, &report).await?;
|
||||
|
||||
Ok("Ok")
|
||||
}
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> Result<()> {
|
||||
// install global collector configured based on RUST_LOG env var.
|
||||
@ -140,6 +172,7 @@ async fn main() -> Result<()> {
|
||||
let app = Router::new()
|
||||
.route("/health", get(health))
|
||||
.route("/current", get(current))
|
||||
.route("/refresh", post(refresh))
|
||||
.route("/report", post(report))
|
||||
.route("/projects", get(projects))
|
||||
.route("/clients", get(clients))
|
||||
|
||||
Loading…
Reference in New Issue
Block a user