//! Message forward CRUD operations on `MessageRepo`. use uuid::Uuid; use crate::ImksResult; use crate::models::message_forward::MessageForward; use super::message_repo::MessageRepo; impl MessageRepo { /// Record a forwarded message's provenance. pub async fn record_forward( &self, message_id: Uuid, source_message_id: Uuid, source_channel_id: Uuid, forwarded_by: Uuid, ) -> ImksResult { sqlx::query_as::<_, MessageForward>( r#" INSERT INTO message_forward (id, message_id, source_message_id, source_channel_id, forwarded_by) VALUES ($1, $2, $3, $4, $5) RETURNING * "#, ) .bind(Uuid::now_v7()) .bind(message_id) .bind(source_message_id) .bind(source_channel_id) .bind(forwarded_by) .fetch_one(self.pool()) .await .map_err(Into::into) } /// Get forwarding info for a message. pub async fn get_forward_info(&self, message_id: Uuid) -> ImksResult> { sqlx::query_as::<_, MessageForward>("SELECT * FROM message_forward WHERE message_id = $1") .bind(message_id) .fetch_optional(self.pool()) .await .map_err(Into::into) } }