Switch to postgres for the analysis task queue and some other minor improvements

This commit is contained in:
Lol3rrr
2024-09-17 16:35:55 +02:00
parent fd4d3f735d
commit 8290fcf390
9 changed files with 115 additions and 37 deletions

View File

@@ -6,12 +6,10 @@ use std::sync::Arc;
struct DemoState {
upload_folder: std::path::PathBuf,
base_analysis: tokio::sync::mpsc::UnboundedSender<crate::analysis::AnalysisInput>,
}
pub fn router<P>(
upload_folder: P,
base_analysis: tokio::sync::mpsc::UnboundedSender<crate::analysis::AnalysisInput>,
) -> axum::Router
where
P: Into<std::path::PathBuf>,
@@ -27,7 +25,6 @@ where
.route("/:id/reanalyse", axum::routing::get(analyise))
.with_state(Arc::new(DemoState {
upload_folder: upload_folder.into(),
base_analysis,
}))
}
@@ -104,14 +101,12 @@ async fn upload(
});
query.execute(&mut db_con).await.unwrap();
state
.base_analysis
.send(crate::analysis::AnalysisInput {
steamid: steam_id.to_string(),
demoid: demo_id,
path: demo_file_path,
})
.unwrap();
let queue_query = diesel::dsl::insert_into(crate::schema::analysis_queue::dsl::analysis_queue).values(crate::models::AddAnalysisTask {
demo_id,
steam_id: steam_id.to_string(),
});
queue_query.execute(&mut db_con).await.unwrap();
let processing_query =
diesel::dsl::insert_into(crate::schema::processing_status::dsl::processing_status)
.values(crate::models::ProcessingStatus { demo_id, info: 0 });
@@ -120,9 +115,8 @@ async fn upload(
Ok(axum::response::Redirect::to("/"))
}
#[tracing::instrument(skip(state, session))]
#[tracing::instrument(skip(session))]
async fn analyise(
State(state): State<Arc<DemoState>>,
session: crate::UserSession,
Path(demo_id): Path<i64>,
) -> Result<(), (axum::http::StatusCode, &'static str)> {
@@ -150,15 +144,11 @@ async fn analyise(
));
}
let user_folder = std::path::Path::new(&state.upload_folder).join(format!("{}/", steam_id));
state
.base_analysis
.send(crate::analysis::AnalysisInput {
path: user_folder.join(format!("{}.dem", demo_id)),
demoid: demo_id,
steamid: steam_id.to_string(),
})
.unwrap();
let queue_query = diesel::dsl::insert_into(crate::schema::analysis_queue::dsl::analysis_queue).values(crate::models::AddAnalysisTask {
demo_id,
steam_id: steam_id.to_string(),
});
queue_query.execute(&mut db_con).await.unwrap();
Ok(())
}