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