1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use std::time::Duration;
use lapin::types::{ FieldTable};

/// Wrapper for queue declare fields
#[derive(Default)]
pub struct QueueDeclare {
    ttl: Option<Duration>,
}

impl Into<FieldTable> for QueueDeclare {
    fn into(self) -> FieldTable {
        let mut fields = FieldTable::default();
        if let Some(ttl) = self.ttl {
            fields.insert("x-message-ttl".into(), (ttl.as_millis() as u32).into() );
        }
        fields
    }
}

impl QueueDeclare {
    /// Creates the fields with TTL set in
    pub fn ttl(duration: Duration) -> QueueDeclare {
        Self { ttl: Some(duration) }
    }
}