use crate::model; use crate::state; use axum::extract::{Json, Query, State}; use sqlx::Row; use std::sync::Arc; // New endpoint to search users pub async fn search_users_handler( State(state): State>, Query(params): Query, // headers: axum::http::HeaderMap, ) -> Json> { let search_pattern = format!("%{}%", params.q); let users = sqlx::query( r#" SELECT username, phone, avatar_url FROM users WHERE (username LIKE ? OR phone LIKE ?) LIMIT 20 "#, ) .bind(&search_pattern) .bind(&search_pattern) .fetch_all(&state.db_pool) .await; match users { Ok(rows) => { let mut results = Vec::new(); for row in rows { results.push(model::ChatPartner { username: row.get("username"), phone: row.get("phone"), avatar_url: row.get("avatar_url"), last_message: None, last_message_time: None, unread_count: 0, }); } Json(results) } Err(e) => { eprintln!("Error searching users: {}", e); Json(Vec::new()) } } }