+ let dbclient = match data_ro.0.get().await {
+ Ok(c) => c,
+ Err(e) => {
+ log::error!("Pool RO error {}", e);
+ return HttpResponse::ServiceUnavailable().body(actix_web::body::None::new());
+ }
+ };
+ let stmt = match dbclient.prepare("select player_name from auth.contacts where protocol = 'mastodon' and is_active = true and delete_ts is null and address = $1 limit 1;").await {
+ Ok(stmt) => stmt,
+ Err(e) => {
+ log::error!("Pool RO statement error {}", e);
+ return HttpResponse::ServiceUnavailable().body(actix_web::body::None::new());
+ }
+ };
+ let address = format!("{}@{}", user, domain);
+ let rows = match dbclient.query_opt(&stmt, &[&address]).await {
+ Ok(rows) => rows,
+ Err(e) => {
+ log::error!("Pool RO query error {}", e);
+ return HttpResponse::ServiceUnavailable().body(actix_web::body::None::new());
+ }
+ };
+ let row = match rows {
+ Some(row) => row,
+ None => {
+ return HttpResponse::NotFound().body("Not found");
+ }
+ };
+
+ let player_name = row.get::<_, &str>(0);
+
+ log::info!("Found player {} to login with mastodon", player_name);
+