rusty_cdk_core/sqs/
dto.rs

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