From 95728302b75cae1e48f8a352daccc66ee12b2bc9 Mon Sep 17 00:00:00 2001 From: Gabriel Kaszewski Date: Thu, 28 May 2026 23:39:35 +0200 Subject: [PATCH] feat(domain): add FeedSort, FeedFilter, FeedOptions, FeedRequest CQRS query types --- crates/domain/src/ports.rs | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/crates/domain/src/ports.rs b/crates/domain/src/ports.rs index e73a457..fb24157 100644 --- a/crates/domain/src/ports.rs +++ b/crates/domain/src/ports.rs @@ -431,9 +431,38 @@ impl FeedQuery { } } +#[derive(Debug, Clone, Default)] +pub enum FeedSort { + #[default] + Newest, + Oldest, + MostLiked, + MostBoosted, + MostDiscussed, +} + +#[derive(Debug, Clone, Default)] +pub struct FeedFilter { + pub originals_only: bool, + pub replies_only: bool, + pub local_only: bool, + pub hide_sensitive: bool, +} + +#[derive(Debug, Clone, Default)] +pub struct FeedOptions { + pub sort: FeedSort, + pub filter: FeedFilter, +} + +pub struct FeedRequest { + pub query: FeedQuery, + pub options: FeedOptions, +} + #[async_trait] pub trait FeedRepository: Send + Sync { - async fn query(&self, q: &FeedQuery) -> Result, DomainError>; + async fn query(&self, req: &FeedRequest) -> Result, DomainError>; } #[async_trait]