Skip to main content

rusty_cdk_core/events/
dto.rs

1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3use crate::{dto_methods, ref_struct};
4use crate::shared::Id;
5
6ref_struct!(ScheduleRef);
7
8#[derive(Debug, Serialize, Deserialize)]
9pub struct Schedule {
10    #[serde(skip)]
11    pub(super) id: Id,
12    #[serde(skip)]
13    pub(super) resource_id: String,
14    #[serde(rename = "Type")]
15    pub(super) r#type: String,
16    #[serde(rename = "Properties")]
17    pub(super) properties: ScheduleProperties,
18}
19
20dto_methods!(Schedule);
21
22#[derive(Debug, Serialize, Deserialize)]
23pub struct ScheduleProperties {
24    #[serde(rename = "StartDate", skip_serializing_if = "Option::is_none")]
25    pub(super) start_date: Option<String>,
26    #[serde(rename = "EndDate", skip_serializing_if = "Option::is_none")]
27    pub(super) end_date: Option<String>,
28    #[serde(rename = "FlexibleTimeWindow")]
29    pub(super) flexible_time_window: FlexibleTimeWindow,
30    #[serde(rename = "GroupName", skip_serializing_if = "Option::is_none")]
31    pub(super) group_name: Option<String>,
32    #[serde(rename = "Name", skip_serializing_if = "Option::is_none")]
33    pub(super) name: Option<String>,
34    #[serde(rename = "State", skip_serializing_if = "Option::is_none")]
35    pub(super) state: Option<String>,
36    #[serde(rename = "ScheduleExpression")]
37    pub(super) schedule_expression: String,
38    #[serde(rename = "Target")]
39    pub(super) target: Target
40    // "ScheduleExpressionTimezone" : String,
41    // "KmsKeyArn" : String,
42
43}
44
45#[derive(Debug, Serialize, Deserialize)]
46pub struct FlexibleTimeWindow {
47    #[serde(rename = "MaximumWindowInMinutes", skip_serializing_if = "Option::is_none")]
48    pub(super) maximum_window_in_minutes: Option<u16>,
49    #[serde(rename = "Mode")]
50    pub(super) mode: String,
51}
52
53#[derive(Debug, Serialize, Deserialize)]
54pub struct Target {
55    #[serde(rename = "Arn")]
56    pub(super) arn: Value,
57    #[serde(rename = "RoleArn")]
58    pub(super) role_arn: Value,
59    #[serde(rename = "Input", skip_serializing_if = "Option::is_none")]
60    pub(super) input: Option<String>,
61    #[serde(rename = "RetryPolicy", skip_serializing_if = "Option::is_none")]
62    pub(super) retry_policy: Option<RetryPolicy>,
63    // DeadLetterConfig: DeadLetterConfig
64    // EcsParameters: EcsParameters
65    // EventBridgeParameters: EventBridgeParameters
66    // KinesisParameters: KinesisParameters
67    // SageMakerPipelineParameters: SageMakerPipelineParameters
68    // SqsParameters: SqsParameters
69}
70
71#[derive(Debug, Serialize, Deserialize)]
72pub struct RetryPolicy {
73    #[serde(rename = "MaximumEventAgeInSeconds", skip_serializing_if = "Option::is_none")]
74    pub(super) maximum_event_age_in_seconds: Option<u32>,
75    #[serde(rename = "MaximumRetryAttempts", skip_serializing_if = "Option::is_none")]
76    pub(super) maximum_retry_attempts: Option<u8>
77}