fraiseql_core/config/
database.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
7#[serde(default)]
8pub struct DatabaseConfig {
9 pub url: String,
11
12 pub max_connections: u32,
14
15 pub min_connections: u32,
17
18 pub connect_timeout_secs: u64,
20
21 pub query_timeout_secs: u64,
23
24 pub idle_timeout_secs: u64,
26
27 pub ssl_mode: SslMode,
29
30 pub mutation_timing: MutationTimingConfig,
32}
33
34impl Default for DatabaseConfig {
35 fn default() -> Self {
36 Self {
37 url: String::new(),
38 max_connections: 10,
39 min_connections: 1,
40 connect_timeout_secs: 10,
41 query_timeout_secs: 30,
42 idle_timeout_secs: 600,
43 ssl_mode: SslMode::Prefer,
44 mutation_timing: MutationTimingConfig::default(),
45 }
46 }
47}
48
49#[derive(Debug, Clone, Serialize, Deserialize)]
55pub struct MutationTimingConfig {
56 pub enabled: bool,
58
59 #[serde(default = "default_timing_variable")]
61 pub variable_name: String,
62}
63
64fn default_timing_variable() -> String {
65 "fraiseql.started_at".to_string()
66}
67
68impl Default for MutationTimingConfig {
69 fn default() -> Self {
70 Self {
71 enabled: false,
72 variable_name: default_timing_variable(),
73 }
74 }
75}
76
77#[derive(Debug, Clone, Copy, Default, Serialize, Deserialize, PartialEq, Eq)]
79#[serde(rename_all = "kebab-case")]
80#[non_exhaustive]
81pub enum SslMode {
82 Disable,
84 #[default]
86 Prefer,
87 Require,
89 VerifyCa,
91 VerifyFull,
93}