(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 serde_json::Value;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::net::SocketAddr;
|
use std::net::SocketAddr;
|
||||||
|
use axum::extract::Query;
|
||||||
|
use serde::Deserialize;
|
||||||
use tower_http::trace::TraceLayer;
|
use tower_http::trace::TraceLayer;
|
||||||
|
|
||||||
mod client;
|
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]
|
#[tokio::main]
|
||||||
async fn main() -> Result<()> {
|
async fn main() -> Result<()> {
|
||||||
// install global collector configured based on RUST_LOG env var.
|
// install global collector configured based on RUST_LOG env var.
|
||||||
@ -140,6 +172,7 @@ async fn main() -> Result<()> {
|
|||||||
let app = Router::new()
|
let app = Router::new()
|
||||||
.route("/health", get(health))
|
.route("/health", get(health))
|
||||||
.route("/current", get(current))
|
.route("/current", get(current))
|
||||||
|
.route("/refresh", post(refresh))
|
||||||
.route("/report", post(report))
|
.route("/report", post(report))
|
||||||
.route("/projects", get(projects))
|
.route("/projects", get(projects))
|
||||||
.route("/clients", get(clients))
|
.route("/clients", get(clients))
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user