shared/config/boot/
cache.rs1use utoipa::ToSchema;
2
3#[derive(Default, Debug, serde::Deserialize)]
4pub struct CacheConfig {
5 pub url: String,
6 pub driver: CacheDriver,
7}
8
9#[derive(
10 Debug, Default, Clone, Copy, serde::Deserialize, serde::Serialize, Eq, PartialEq, ToSchema,
11)]
12pub enum CacheDriver {
13 #[default]
14 MemCached,
15 Redis,
16 InMemory,
17}
18
19impl CacheDriver {
20 pub fn as_str(&self) -> &'static str {
21 match self {
22 CacheDriver::MemCached => "memcached",
23 CacheDriver::Redis => "redis",
24 CacheDriver::InMemory => "in_memory",
25 }
26 }
27 pub fn name(&self) -> &'static str {
28 match self {
29 CacheDriver::MemCached => "MemCached",
30 CacheDriver::Redis => "Redis",
31 CacheDriver::InMemory => "InMemory",
32 }
33 }
34}
35impl std::fmt::Display for CacheDriver {
36 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
37 write!(f, "{}", self.as_str())
38 }
39}
40impl TryFrom<String> for CacheDriver {
41 type Error = String;
42
43 fn try_from(s: String) -> Result<Self, Self::Error> {
44 match s.to_lowercase().as_str() {
45 "memcached" => Ok(Self::MemCached),
46 "redis" => Ok(Self::Redis),
47 "in_memory" => Ok(Self::InMemory),
48 other => Err(format!(
49 "{} is not supported database. Use either `memcached`, `redis` or `in_memory`",
50 other
51 )),
52 }
53 }
54}