Skip to main content

rusty_cdk_core/sqs/
dto.rs

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