|
|
@ -7,13 +7,12 @@ use axum::middleware; |
|
|
|
use axum::routing::get; |
|
|
|
use axum::routing::get; |
|
|
|
use axum::Router; |
|
|
|
use axum::Router; |
|
|
|
use futures::stream::TryStreamExt; |
|
|
|
use futures::stream::TryStreamExt; |
|
|
|
use futures::StreamExt; |
|
|
|
|
|
|
|
use mongodb::bson::doc; |
|
|
|
use mongodb::bson::doc; |
|
|
|
use mongodb::bson::Document; |
|
|
|
use mongodb::bson::Document; |
|
|
|
use mongodb::options::FindOptions; |
|
|
|
use mongodb::options::FindOptions; |
|
|
|
use tokio::task::JoinHandle; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
use crate::auth; |
|
|
|
use crate::auth; |
|
|
|
|
|
|
|
use crate::entities::Case; |
|
|
|
use crate::State; |
|
|
|
use crate::State; |
|
|
|
|
|
|
|
|
|
|
|
/// Build the routes for the cases resource.
|
|
|
|
/// Build the routes for the cases resource.
|
|
|
@ -35,28 +34,34 @@ pub fn router(state: Arc<State>, ci_usr: String, ci_pwd: String, ci_role: String |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
async fn all_cases_on_collection(Path(collection): Path<String>, state: Arc<State>) -> String { |
|
|
|
async fn all_cases_on_collection(Path(collection): Path<String>, state: Arc<State>) -> String { |
|
|
|
let collection = Arc::new(state.db.collection::<Document>(&collection)); |
|
|
|
let collection = state.db.collection::<Case>(&collection); |
|
|
|
let options = FindOptions::builder() |
|
|
|
let mut cursor = collection.find(None, None).await.unwrap(); |
|
|
|
.projection(doc! { "caseID": 1 }) |
|
|
|
// let options = FindOptions::builder()
|
|
|
|
.build(); |
|
|
|
// .projection(doc! { "caseID": 1 })
|
|
|
|
let mut cursor = collection.find(None, options).await.unwrap(); |
|
|
|
// .build();
|
|
|
|
let mut calls = Vec::new(); |
|
|
|
// let mut cursor = collection.find(None, options).await.unwrap();
|
|
|
|
|
|
|
|
// let mut calls = Vec::new();
|
|
|
|
|
|
|
|
|
|
|
|
while let Some(record) = cursor.try_next().await.unwrap() { |
|
|
|
// while let Some(record) = cursor.try_next().await.unwrap() {
|
|
|
|
let name = record.get_str("caseID").unwrap(); |
|
|
|
// let name = record.get_str("caseID").unwrap();
|
|
|
|
let filter = doc! { "caseID": name }; |
|
|
|
// let filter = doc! { "caseID": name };
|
|
|
|
let task_collection = Arc::clone(&collection); |
|
|
|
// tracing::debug!(name, "filter: {}", filter);
|
|
|
|
let task = tokio::task::spawn(async move { |
|
|
|
// let task_collection = Arc::clone(&collection);
|
|
|
|
let record = task_collection.find_one(filter, None).await.unwrap(); |
|
|
|
// let task = tokio::task::spawn(async move {
|
|
|
|
record |
|
|
|
// let record = task_collection.find_one(filter, None).await.unwrap();
|
|
|
|
}); |
|
|
|
// record
|
|
|
|
|
|
|
|
// });
|
|
|
|
calls.push(task); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for handle in calls { |
|
|
|
// calls.push(task);
|
|
|
|
let record = handle.await; |
|
|
|
// }
|
|
|
|
tracing::debug!("Case: {:?}", record); |
|
|
|
|
|
|
|
|
|
|
|
// tracing::debug!("Awaiting data...");
|
|
|
|
|
|
|
|
// for handle in calls {
|
|
|
|
|
|
|
|
// let record = handle.await;
|
|
|
|
|
|
|
|
// tracing::debug!("Case: {:?}", record.unwrap());
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
while let Some(record) = cursor.try_next().await.unwrap() { |
|
|
|
|
|
|
|
tracing::debug!(?record); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
format!("Cases!") |
|
|
|
format!("Cases!") |
|
|
|