mostro_client/cli/
get_dm.rs1use anyhow::Result;
2use mostro_core::prelude::Message;
3
4use crate::{
5 cli::Context,
6 parser::dms::print_direct_messages,
7 util::{fetch_events_list, Event, ListKind},
8};
9
10pub async fn execute_get_dm(
11 since: Option<&i64>,
12 admin: bool,
13 from_user: &bool,
14 ctx: &Context,
15) -> Result<()> {
16 let list_kind = match (admin, from_user) {
18 (true, true) => ListKind::PrivateDirectMessagesUser,
19 (true, false) => ListKind::DirectMessagesAdmin,
20 (false, true) => ListKind::PrivateDirectMessagesUser,
21 (false, false) => ListKind::DirectMessagesUser,
22 };
23
24 let all_fetched_events = { fetch_events_list(list_kind, None, None, None, ctx, since).await? };
26
27 let mut dm_events: Vec<(Message, u64)> = Vec::new();
29 for event in all_fetched_events {
30 if let Event::MessageTuple(tuple) = event {
31 dm_events.push(*tuple);
32 }
33 }
34
35 print_direct_messages(&dm_events, &ctx.pool).await?;
36 Ok(())
37}