1use serde::{Deserialize, Serialize};
2
3#[derive(Serialize, Deserialize, Debug, Clone)]
4pub struct RoutesConfig {
5 pub project: Option<ProjectConfig>,
6 pub deployment: Option<DeploymentConfig>,
7 pub route: std::collections::HashMap<String, RouteConfig>,
8 pub topic: Option<std::collections::HashMap<String, TopicConfig>>,
9 pub db: Option<std::collections::HashMap<String, DbConfig>>,
10 pub auth: Option<std::collections::HashMap<String, AuthHandlerConfig>>,
11}
12
13#[derive(Serialize, Deserialize, Debug, Clone)]
14pub struct ProjectConfig {
15 pub name: String,
16 pub version: String,
17}
18
19#[derive(Serialize, Deserialize, Debug, Clone)]
20pub struct DeploymentConfig {
21 pub runtime: Option<String>,
22 pub memory: Option<String>,
23 pub timeout: Option<String>,
24 pub environment: Option<String>,
25 pub arn: Option<String>,
26}
27
28#[derive(Serialize, Deserialize, Debug, Clone)]
29pub struct RouteConfig {
30 pub method: String,
31 pub path: String,
32 pub binary: String,
33 pub description: Option<String>,
34 pub parameters: Option<std::collections::HashMap<String, ParameterConfig>>,
35 pub deployment: Option<DeploymentConfig>,
36 pub auth: Option<AuthConfig>,
37}
38
39#[derive(Serialize, Deserialize, Debug, Clone)]
40pub struct AuthConfig {
41 pub handler: String,
42 pub required: bool,
43}
44
45#[derive(Serialize, Deserialize, Debug, Clone)]
46pub struct ParameterConfig {
47 #[serde(rename = "type")]
48 pub param_type: String,
49 pub source: String,
50 pub required: Option<bool>,
51 pub description: Option<String>,
52}
53
54#[derive(Serialize, Deserialize, Debug, Clone)]
55pub struct TopicConfig {
56 pub name: String,
57 pub subscribers: std::collections::HashMap<String, SubscriberConfig>,
58 pub description: Option<String>,
59}
60
61#[derive(Serialize, Deserialize, Debug, Clone)]
62pub struct SubscriberConfig {
63 pub binary: String,
64 pub description: Option<String>,
65 pub deployment: Option<DeploymentConfig>,
66}
67
68#[derive(Serialize, Deserialize, Debug, Clone)]
69pub struct DbConfig {
70 pub name: String,
71 pub description: Option<String>,
72}
73
74#[derive(Serialize, Deserialize, Debug, Clone)]
75pub struct AuthHandlerConfig {
76 pub binary: String,
77 pub description: Option<String>,
78 pub deployment: Option<DeploymentConfig>,
79}