treewide: fix various UI bugs; optimize crypto dependencies & format
Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: If8fe8b38c1d9c4fecd40ff71f88d2ae06a6a6964
This commit is contained in:
parent
764aafa88d
commit
3ccddce7fd
178 changed files with 58285 additions and 54241 deletions
|
|
@ -1,55 +1,65 @@
|
|||
use axum::Json;
|
||||
use axum::extract::{Path, State};
|
||||
use axum::{
|
||||
Json,
|
||||
extract::{Path, State},
|
||||
};
|
||||
|
||||
use crate::dto::ScheduledTaskResponse;
|
||||
use crate::error::ApiError;
|
||||
use crate::state::AppState;
|
||||
use crate::{dto::ScheduledTaskResponse, error::ApiError, state::AppState};
|
||||
|
||||
pub async fn list_scheduled_tasks(
|
||||
State(state): State<AppState>,
|
||||
State(state): State<AppState>,
|
||||
) -> Result<Json<Vec<ScheduledTaskResponse>>, ApiError> {
|
||||
let tasks = state.scheduler.list_tasks().await;
|
||||
let responses: Vec<ScheduledTaskResponse> = tasks
|
||||
.into_iter()
|
||||
.map(|t| ScheduledTaskResponse {
|
||||
id: t.id,
|
||||
name: t.name,
|
||||
schedule: t.schedule.display_string(),
|
||||
enabled: t.enabled,
|
||||
last_run: t.last_run.map(|dt| dt.to_rfc3339()),
|
||||
next_run: t.next_run.map(|dt| dt.to_rfc3339()),
|
||||
last_status: t.last_status,
|
||||
})
|
||||
.collect();
|
||||
Ok(Json(responses))
|
||||
let tasks = state.scheduler.list_tasks().await;
|
||||
let responses: Vec<ScheduledTaskResponse> = tasks
|
||||
.into_iter()
|
||||
.map(|t| {
|
||||
ScheduledTaskResponse {
|
||||
id: t.id,
|
||||
name: t.name,
|
||||
schedule: t.schedule.display_string(),
|
||||
enabled: t.enabled,
|
||||
last_run: t.last_run.map(|dt| dt.to_rfc3339()),
|
||||
next_run: t.next_run.map(|dt| dt.to_rfc3339()),
|
||||
last_status: t.last_status,
|
||||
}
|
||||
})
|
||||
.collect();
|
||||
Ok(Json(responses))
|
||||
}
|
||||
|
||||
pub async fn toggle_scheduled_task(
|
||||
State(state): State<AppState>,
|
||||
Path(id): Path<String>,
|
||||
State(state): State<AppState>,
|
||||
Path(id): Path<String>,
|
||||
) -> Result<Json<serde_json::Value>, ApiError> {
|
||||
match state.scheduler.toggle_task(&id).await {
|
||||
Some(enabled) => Ok(Json(serde_json::json!({
|
||||
"id": id,
|
||||
"enabled": enabled,
|
||||
}))),
|
||||
None => Err(ApiError(pinakes_core::error::PinakesError::NotFound(
|
||||
format!("scheduled task not found: {id}"),
|
||||
))),
|
||||
}
|
||||
match state.scheduler.toggle_task(&id).await {
|
||||
Some(enabled) => {
|
||||
Ok(Json(serde_json::json!({
|
||||
"id": id,
|
||||
"enabled": enabled,
|
||||
})))
|
||||
},
|
||||
None => {
|
||||
Err(ApiError(pinakes_core::error::PinakesError::NotFound(
|
||||
format!("scheduled task not found: {id}"),
|
||||
)))
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn run_scheduled_task_now(
|
||||
State(state): State<AppState>,
|
||||
Path(id): Path<String>,
|
||||
State(state): State<AppState>,
|
||||
Path(id): Path<String>,
|
||||
) -> Result<Json<serde_json::Value>, ApiError> {
|
||||
match state.scheduler.run_now(&id).await {
|
||||
Some(job_id) => Ok(Json(serde_json::json!({
|
||||
"id": id,
|
||||
"job_id": job_id,
|
||||
}))),
|
||||
None => Err(ApiError(pinakes_core::error::PinakesError::NotFound(
|
||||
format!("scheduled task not found: {id}"),
|
||||
))),
|
||||
}
|
||||
match state.scheduler.run_now(&id).await {
|
||||
Some(job_id) => {
|
||||
Ok(Json(serde_json::json!({
|
||||
"id": id,
|
||||
"job_id": job_id,
|
||||
})))
|
||||
},
|
||||
None => {
|
||||
Err(ApiError(pinakes_core::error::PinakesError::NotFound(
|
||||
format!("scheduled task not found: {id}"),
|
||||
)))
|
||||
},
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue