mirror of
https://github.com/perstarkse/minne.git
synced 2026-04-27 11:17:03 +02:00
62 lines
1.7 KiB
Rust
62 lines
1.7 KiB
Rust
use crate::{
|
|
error::{AppError, HtmlError},
|
|
page_data,
|
|
server::AppState,
|
|
storage::types::{job::Job, user::User},
|
|
};
|
|
use axum::{
|
|
extract::{Path, State},
|
|
response::{Html, IntoResponse, Redirect},
|
|
};
|
|
use axum_session_auth::AuthSession;
|
|
use axum_session_surreal::SessionSurrealPool;
|
|
use surrealdb::{engine::any::Any, Surreal};
|
|
|
|
use super::render_template;
|
|
|
|
page_data!(ShowQueueTasks, "queue_tasks.html", {jobs: Vec<Job>});
|
|
|
|
pub async fn show_queue_tasks(
|
|
State(state): State<AppState>,
|
|
auth: AuthSession<User, String, SessionSurrealPool<Any>, Surreal<Any>>,
|
|
) -> Result<impl IntoResponse, HtmlError> {
|
|
let user = match auth.current_user {
|
|
Some(user) => user,
|
|
None => return Ok(Redirect::to("/signin").into_response()),
|
|
};
|
|
|
|
let jobs = state
|
|
.job_queue
|
|
.get_user_jobs(&user.id)
|
|
.await
|
|
.map_err(|e| HtmlError::new(e, state.templates.clone()))?;
|
|
|
|
let rendered = render_template(
|
|
ShowQueueTasks::template_name(),
|
|
ShowQueueTasks { jobs },
|
|
state.templates.clone(),
|
|
)
|
|
.map_err(|e| HtmlError::new(AppError::from(e), state.templates.clone()))?;
|
|
|
|
Ok(rendered.into_response())
|
|
}
|
|
|
|
pub async fn delete_task(
|
|
State(state): State<AppState>,
|
|
auth: AuthSession<User, String, SessionSurrealPool<Any>, Surreal<Any>>,
|
|
Path(id): Path<String>,
|
|
) -> Result<impl IntoResponse, HtmlError> {
|
|
let user = match auth.current_user {
|
|
Some(user) => user,
|
|
None => return Ok(Redirect::to("/signin").into_response()),
|
|
};
|
|
|
|
state
|
|
.job_queue
|
|
.delete_job(&id, &user.id)
|
|
.await
|
|
.map_err(|e| HtmlError::new(e, state.templates.clone()))?;
|
|
|
|
Ok(Html("").into_response())
|
|
}
|