rusty_cdk_core/sqs/
dto.rs

1use serde::Serialize;
2use serde_json::Value;
3use crate::{dto_methods, ref_struct};
4use crate::iam::PolicyDocument;
5use crate::intrinsic::{get_arn, get_att, get_ref};
6use crate::shared::Id;
7
8ref_struct!(QueueRef);
9
10#[derive(Debug, Serialize)]
11pub struct Queue {
12    #[serde(skip)]
13    pub(super) id: Id,
14    #[serde(skip)]
15    pub(super) resource_id: String,
16    #[serde(rename = "Type")]
17    pub(super) r#type: String,
18    #[serde(rename = "Properties")]
19    pub(super) properties: QueueProperties,
20}
21dto_methods!(Queue);
22
23#[derive(Debug, Serialize)]
24pub struct QueueProperties {
25    #[serde(rename = "QueueName", skip_serializing_if = "Option::is_none")]
26    pub(super) queue_name: Option<String>,
27    #[serde(rename = "DelaySeconds", skip_serializing_if = "Option::is_none")]
28    pub(super) delay_seconds: Option<u32>,
29    #[serde(rename = "MaximumMessageSize", skip_serializing_if = "Option::is_none")]
30    pub(super) maximum_message_size: Option<u32>,
31    #[serde(rename = "MessageRetentionPeriod", skip_serializing_if = "Option::is_none")]
32    pub(super) message_retention_period: Option<u32>,
33    #[serde(rename = "ReceiveMessageWaitTimeSeconds", skip_serializing_if = "Option::is_none")]
34    pub(super) receive_message_wait_time_seconds: Option<u32>,
35    #[serde(rename = "VisibilityTimeout", skip_serializing_if = "Option::is_none")]
36    pub(super) visibility_timeout: Option<u32>,
37    #[serde(rename = "FifoQueue", skip_serializing_if = "Option::is_none")]
38    pub(super) fifo_queue: Option<bool>,
39    #[serde(rename = "ContentBasedDeduplication", skip_serializing_if = "Option::is_none")]
40    pub(super) content_based_deduplication: Option<bool>,
41    #[serde(rename = "DeduplicationScope", skip_serializing_if = "Option::is_none")]
42    pub(super) deduplication_scope: Option<String>,
43    #[serde(rename = "FifoThroughputLimit", skip_serializing_if = "Option::is_none")]
44    pub(super) fifo_throughput_limit: Option<String>,
45    #[serde(rename = "SqsManagedSseEnabled", skip_serializing_if = "Option::is_none")]
46    pub(super) sqs_managed_sse_enabled: Option<bool>,
47    #[serde(rename = "RedrivePolicy", skip_serializing_if = "Option::is_none")]
48    pub(super) redrive_policy: Option<RedrivePolicy>,
49    #[serde(rename = "RedriveAllowPolicy", skip_serializing_if = "Option::is_none")]
50    pub(super) redrive_allow_policy: Option<Value>,
51}
52
53pub struct QueuePolicyRef {
54    id: Id,
55    resource_id: String,
56}
57
58impl QueuePolicyRef {
59    pub fn new(id: Id, resource_id: String) -> Self {
60        Self {
61            id,
62            resource_id
63        }
64    }
65
66    pub fn get_id(&self) -> Id {
67        self.id.clone()
68    }
69
70    pub fn get_resource_id(&self) -> &str {
71        self.resource_id.as_str()
72    }
73
74    pub fn get_ref(&self) -> Value {
75        get_ref(self.get_resource_id())
76    }
77
78    pub fn get_arn(&self) -> Value {
79        get_arn(self.get_resource_id())
80    }
81
82    pub fn get_att(&self, id: &str) -> Value {
83        get_att(self.get_resource_id(), id)
84    }
85}
86
87#[derive(Debug, Serialize)]
88pub struct QueuePolicy {
89    #[serde(skip)]
90    pub(super) id: Id,
91    #[serde(skip)]
92    pub(super) resource_id: String,
93    #[serde(rename = "Type")]
94    pub(super) r#type: String,
95    #[serde(rename = "Properties")]
96    pub(super) properties: QueuePolicyProperties,
97}
98dto_methods!(QueuePolicy);
99
100#[derive(Debug, Serialize)]
101pub struct QueuePolicyProperties {
102    #[serde(rename = "PolicyDocument")]
103    pub(super) doc: PolicyDocument,
104    #[serde(rename = "Queues")]
105    pub(super) queues: Vec<Value>,   
106}
107
108#[derive(Debug, Serialize)]
109pub struct RedrivePolicy {
110    #[serde(rename = "deadLetterTargetArn")]
111    pub(super) dead_letter_target_arn: String,
112    #[serde(rename = "maxReceiveCount")]
113    pub(super) max_receive_count: u32,
114}