debug: Add detailed logging and timeouts to MongoDB connection
Some checks failed
Lint and Build / Lint (push) Failing after 5s
Lint and Build / Build (push) Has been skipped
Lint and Build / Docker Build (push) Has been skipped

This commit is contained in:
goose 2026-02-20 10:31:20 -03:00
parent 7d83255051
commit 44a6f91505

View file

@ -1,6 +1,7 @@
use mongodb::{Client, Database, Collection, bson::doc};
use mongodb::{Client, Database, Collection, bson::doc, options::ClientOptions};
use anyhow::Result;
use mongodb::bson::oid::ObjectId;
use std::time::Duration;
use crate::models::{
user::{User, UserRepository},
@ -17,9 +18,35 @@ pub struct MongoDb {
impl MongoDb {
pub async fn new(uri: &str, db_name: &str) -> Result<Self> {
let client = Client::with_uri_str(uri).await?;
eprintln!("[MongoDB] Starting connection to: {}", uri);
// Parse the URI first
let mut client_options = ClientOptions::parse(uri).await
.map_err(|e| {
eprintln!("[MongoDB] Failed to parse URI: {}", e);
anyhow::anyhow!("Failed to parse MongoDB URI: {}", e)
})?;
eprintln!("[MongoDB] URI parsed successfully");
// Set connection timeout
client_options.server_selection_timeout = Some(Duration::from_secs(5));
client_options.connect_timeout = Some(Duration::from_secs(5));
eprintln!("[MongoDB] Connecting to server...");
let client = Client::with_options(client_options)
.map_err(|e| {
eprintln!("[MongoDB] Failed to create client: {}", e);
anyhow::anyhow!("Failed to create MongoDB client: {}", e)
})?;
eprintln!("[MongoDB] Client created, selecting database...");
let database = client.database(db_name);
eprintln!("[MongoDB] Database selected: {}", db_name);
Ok(Self {
users: database.collection("users"),
shares: database.collection("shares"),
@ -28,7 +55,9 @@ impl MongoDb {
}
pub async fn health_check(&self) -> Result<String> {
eprintln!("[MongoDB] Health check: pinging database...");
self.database.run_command(doc! { "ping": 1 }, None).await?;
eprintln!("[MongoDB] Health check: OK");
Ok("OK".to_string())
}