use anyhow::Result; use crate::repo::Storage; use crate::room::RoomId; impl Storage { pub async fn retrieve_user_id_by_name(&self, name: &str) -> Result> { let mut executor = self.conn.lock().await; let res: Option<(u32,)> = sqlx::query_as("select u.id from users u where u.name = ?;") .bind(name) .fetch_optional(&mut *executor) .await?; Ok(res.map(|(id,)| id)) } pub async fn get_rooms_of_a_user(&self, user_id: u32) -> Result> { let mut executor = self.conn.lock().await; let res: Vec<(String,)> = sqlx::query_as( "select r.name from memberships m inner join rooms r on m.room_id = r.id where m.user_id = ?;", ) .bind(user_id) .fetch_all(&mut *executor) .await?; res.into_iter().map(|(room_id,)| RoomId::from(room_id)).collect() } }