Skip to main content

hyperlane_plugin/env/
struct.rs

1use super::*;
2
3#[derive(Clone, Copy, Data, Debug, Default)]
4pub struct EnvPlugin;
5
6#[derive(Clone, Data, Debug, Default)]
7pub struct DockerComposeConfig {
8    pub(super) mysql_database: Option<String>,
9    pub(super) mysql_password: Option<String>,
10    #[get(type(copy))]
11    pub(super) mysql_port: Option<usize>,
12    pub(super) mysql_username: Option<String>,
13    pub(super) postgresql_database: Option<String>,
14    pub(super) postgresql_password: Option<String>,
15    #[get(type(copy))]
16    pub(super) postgresql_port: Option<usize>,
17    pub(super) postgresql_username: Option<String>,
18    pub(super) redis_password: Option<String>,
19    #[get(type(copy))]
20    pub(super) redis_port: Option<usize>,
21    pub(super) redis_username: Option<String>,
22}
23
24#[derive(Clone, Data, Debug, Default)]
25pub struct EnvConfig {
26    #[get(type(copy))]
27    pub(super) db_connection_timeout_millis: u64,
28    #[get(type(copy))]
29    pub(super) db_retry_interval_millis: u64,
30    #[get(pub)]
31    pub(super) gpt_api_url: String,
32    #[get(pub)]
33    pub(super) gpt_model: String,
34    pub(super) mysql_instances: Vec<MySqlInstanceConfig>,
35    pub(super) postgresql_instances: Vec<PostgreSqlInstanceConfig>,
36    pub(super) redis_instances: Vec<RedisInstanceConfig>,
37    #[get(type(copy))]
38    pub(super) server_port: u16,
39    #[get(pub)]
40    pub(super) server_host: String,
41    #[get(type(copy))]
42    pub(super) server_buffer: usize,
43    #[get(type(copy))]
44    pub(super) server_log_size: usize,
45    #[get(pub)]
46    pub(super) server_log_dir: String,
47    #[get(type(copy))]
48    pub(super) server_inner_print: bool,
49    #[get(type(copy))]
50    pub(super) server_inner_log: bool,
51    #[get(type(copy))]
52    pub(super) server_nodelay: Option<bool>,
53    #[get(type(copy))]
54    pub(super) server_tti: Option<u32>,
55    #[get(pub)]
56    pub(super) server_pid_file_path: String,
57    #[get(type(copy))]
58    pub(super) server_request_http_read_timeout_ms: u64,
59    #[get(type(copy))]
60    pub(super) server_request_max_body_size: usize,
61}
62
63#[derive(Clone, Debug, Default, serde::Deserialize, Data)]
64pub struct MySqlInstanceConfig {
65    #[serde(rename = "name")]
66    pub(super) name: String,
67    #[serde(rename = "host")]
68    pub(super) host: String,
69    #[get(type(copy))]
70    #[serde(default, rename = "port")]
71    pub(super) port: usize,
72    #[serde(rename = "database")]
73    pub(super) database: String,
74    #[serde(rename = "username")]
75    pub(super) username: String,
76    #[serde(rename = "password")]
77    pub(super) password: String,
78}
79
80#[derive(Clone, Debug, Default, serde::Deserialize, Data)]
81pub struct PostgreSqlInstanceConfig {
82    #[serde(rename = "name")]
83    pub(super) name: String,
84    #[serde(rename = "host")]
85    pub(super) host: String,
86    #[get(type(copy))]
87    #[serde(default, rename = "port")]
88    pub(super) port: usize,
89    #[serde(rename = "database")]
90    pub(super) database: String,
91    #[serde(rename = "username")]
92    pub(super) username: String,
93    #[serde(rename = "password")]
94    pub(super) password: String,
95}
96
97#[derive(Clone, Debug, Default, serde::Deserialize, Data)]
98pub struct RedisInstanceConfig {
99    #[serde(rename = "name")]
100    pub(super) name: String,
101    #[serde(rename = "host")]
102    pub(super) host: String,
103    #[get(type(copy))]
104    #[serde(default, rename = "port")]
105    pub(super) port: usize,
106    #[serde(default, rename = "username")]
107    pub(super) username: String,
108    #[serde(rename = "password")]
109    pub(super) password: String,
110}