diff --git a/services/identity/src/websockets/mod.rs b/services/identity/src/websockets/mod.rs --- a/services/identity/src/websockets/mod.rs +++ b/services/identity/src/websockets/mod.rs @@ -11,6 +11,7 @@ use hyper_tungstenite::HyperWebsocket; use identity_search_messages::{ ConnectionInitializationResponse, ConnectionInitializationStatus, + SearchResult, User, }; use serde::{Deserialize, Serialize}; use tokio::net::TcpListener; @@ -40,13 +41,6 @@ username: String, } -#[derive(Serialize, Deserialize)] -struct User { - #[serde(rename = "userID")] - user_id: String, - username: String, -} - struct WebsocketService { addr: SocketAddr, } @@ -282,12 +276,10 @@ } }; - let usernames: Vec<&User> = search_response.documents().collect(); + let usernames: Vec = search_response.into_documents().collect(); - let response_msg = serde_json::json!({ - "action": "searchResults", - "results": usernames - }); + let response_msg = + serde_json::json!(SearchResult { payload: usernames }); if let Err(e) = outgoing .lock() diff --git a/shared/identity_search_messages/src/messages/mod.rs b/shared/identity_search_messages/src/messages/mod.rs --- a/shared/identity_search_messages/src/messages/mod.rs +++ b/shared/identity_search_messages/src/messages/mod.rs @@ -1,8 +1,10 @@ //! Messages sent from Identity Search server to client pub mod auth_messages; +pub mod search_result; pub use auth_messages::*; +pub use search_result::*; use serde::{Deserialize, Serialize}; pub use websocket_messages::{ diff --git a/shared/identity_search_messages/src/messages/search_result.rs b/shared/identity_search_messages/src/messages/search_result.rs new file mode 100644 --- /dev/null +++ b/shared/identity_search_messages/src/messages/search_result.rs @@ -0,0 +1,16 @@ +//! Search Result Messages sent by Identity Search via WebSocket. + +use serde::{Deserialize, Serialize}; + +#[derive(Serialize, Deserialize)] +pub struct User { + #[serde(rename = "userID")] + pub user_id: String, + pub username: String, +} + +#[derive(Serialize, Deserialize)] +#[serde(tag = "type")] +pub struct SearchResult { + pub payload: Vec, +}