more refactor on backend
This commit is contained in:
1 parent
941afa2485
commit
7f7936d37f
20 files changed
+1603
-1527
No files matched your search
@@ -0,0 +1,48 @@
|
||||
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<Arc<state::AppState>>,
|
||||
Query(params): Query<model::SearchQuery>,
|
||||
// headers: axum::http::HeaderMap,
|
||||
) -> Json<Vec<model::ChatPartner>> {
|
||||
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())
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user