more refactor on backend

This commit is contained in:
wt committed 2025-11-28 01:38:59 +07:00
1 parent 941afa2485
commit 7f7936d37f
20 files changed
+1603 -1527

No files matched your search

+48
View File
@@ -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())
}
}
}