Files
stoatchat/crates/daemons/searchd/src/consumers/message_edit.rs
Zomatree d97260f2fe feat: search by message components
Signed-off-by: Zomatree <me@zomatree.live>
2026-03-29 05:44:28 +01:00

35 lines
1.1 KiB
Rust

use amqprs::{BasicProperties, Deliver, channel::{BasicAckArguments, Channel}, consumer::AsyncConsumer};
use async_trait::async_trait;
use revolt_database::{Database, Message};
use revolt_search::ElasticsearchClient;
pub struct MessageEditConsumer {
client: ElasticsearchClient,
database: Database
}
impl MessageEditConsumer {
pub fn new(client: ElasticsearchClient, database: Database) -> Self {
Self { client, database }
}
}
#[async_trait]
impl AsyncConsumer for MessageEditConsumer {
async fn consume(
&mut self,
channel: &Channel,
deliver: Deliver,
_basic_properties: BasicProperties,
content: Vec<u8>,
) {
let message = serde_json::from_slice::<Message>(&content).expect("Failed to decode message");
log::debug!("Received edit message {message:?}");
if self.client.edit_message(&self.database, message).await.is_ok() {
channel.basic_ack(BasicAckArguments::new(deliver.delivery_tag(), false)).await.expect("Failed to ack");
} else {
// todo requeue
}
}
}