1use std::time::Duration;
2
3#[derive(Debug, Clone, PartialEq, Eq)]
5pub enum DatabaseKind {
6 Sqlite,
8 Postgres,
10 Mysql,
12}
13
14#[derive(Debug, Clone, PartialEq, Eq)]
16pub struct DatabaseConfig {
17 pub kind: DatabaseKind,
19 pub url: String,
21 pub max_connections: u32,
23 pub connect_timeout: Duration,
25}
26
27impl DatabaseConfig {
28 pub fn sqlite(url: impl Into<String>) -> Self {
30 Self {
31 kind: DatabaseKind::Sqlite,
32 url: url.into(),
33 max_connections: 5,
34 connect_timeout: Duration::from_secs(5),
35 }
36 }
37
38 pub fn postgres(url: impl Into<String>) -> Self {
40 Self {
41 kind: DatabaseKind::Postgres,
42 url: url.into(),
43 max_connections: 5,
44 connect_timeout: Duration::from_secs(5),
45 }
46 }
47
48 pub fn mysql(url: impl Into<String>) -> Self {
50 Self {
51 kind: DatabaseKind::Mysql,
52 url: url.into(),
53 max_connections: 5,
54 connect_timeout: Duration::from_secs(5),
55 }
56 }
57}
58
59impl Default for DatabaseConfig {
60 fn default() -> Self {
61 Self::sqlite("sqlite::memory:")
62 }
63}