sqs_lambda/
local_sqs_service_options.rs

1use std::time::Duration;
2
3use crate::sqs_completion_handler::CompletionPolicy;
4use crate::sqs_consumer::ConsumePolicy;
5use chrono::Utc;
6
7#[derive(Default)]
8pub struct LocalSqsServiceOptionsBuilder {
9    completion_policy: Option<CompletionPolicy>,
10    consume_policy: Option<ConsumePolicy>,
11}
12impl LocalSqsServiceOptionsBuilder {
13    pub fn with_completion_policy(&mut self, arg: CompletionPolicy) -> &Self {
14        self.completion_policy = Some(arg);
15        self
16    }
17
18    pub fn with_minimal_buffer_completion_policy(&mut self) -> &Self {
19        self.with_completion_policy(CompletionPolicy::new(
20            1,                      // Buffer up to 1 message
21            Duration::from_secs(1), // Buffer for up to 1 second
22        ))
23    }
24
25    pub fn with_consume_policy(&mut self, arg: ConsumePolicy) -> &Self {
26        self.consume_policy = Some(arg);
27        self
28    }
29
30
31    pub fn build(self) -> LocalSqsServiceOptions {
32        LocalSqsServiceOptions {
33            completion_policy: self.completion_policy.unwrap_or_else(|| {
34                CompletionPolicy::new(
35                    10,
36                    Duration::from_secs(3),
37                )
38            }),
39            consume_policy: self.consume_policy.unwrap_or_else(|| {
40                ConsumePolicy::new(
41                    Utc::now().timestamp_millis() + 10_000,
42                    Duration::from_secs(5),
43                    300,
44                )
45            }),
46        }
47    }
48}
49
50pub struct LocalSqsServiceOptions {
51    pub completion_policy: CompletionPolicy,
52    pub consume_policy: ConsumePolicy,
53}