Skip to main content

allsource_core/application/dto/
consumer_dto.rs

1use serde::{Deserialize, Serialize};
2
3use super::EventDto;
4
5/// Request to register a durable consumer
6#[derive(Debug, Deserialize)]
7pub struct RegisterConsumerRequest {
8    pub consumer_id: String,
9    #[serde(default)]
10    pub event_type_filters: Vec<String>,
11}
12
13/// Response from consumer registration
14#[derive(Debug, Serialize)]
15pub struct ConsumerResponse {
16    pub consumer_id: String,
17    pub event_type_filters: Vec<String>,
18    pub cursor_position: Option<u64>,
19}
20
21/// Request to acknowledge processed events
22#[derive(Debug, Deserialize)]
23pub struct AckRequest {
24    pub position: u64,
25}
26
27/// Response from consumer event polling
28#[derive(Debug, Serialize)]
29pub struct ConsumerEventsResponse {
30    pub events: Vec<ConsumerEventDto>,
31    pub count: usize,
32}
33
34/// Event DTO with position for consumer polling
35#[derive(Debug, Serialize)]
36pub struct ConsumerEventDto {
37    /// Global offset position (used for acking)
38    pub position: u64,
39    #[serde(flatten)]
40    pub event: EventDto,
41}