polyphony_types/entities/
config.rs

1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3#[cfg(feature = "sqlx")]
4use sqlx::FromRow;
5
6#[derive(Debug, Serialize, Deserialize)]
7#[cfg_attr(feature = "sqlx", derive(FromRow))]
8pub struct ConfigEntity {
9    pub key: String,
10    pub value: Option<Value>,
11}
12
13impl ConfigEntity {
14    pub fn as_string(&self) -> Option<String> {
15        let Some(v) = self.value.as_ref() else {
16            return None;
17        };
18        Some(v.as_str().expect("value is not a string").to_string())
19    }
20
21    pub fn as_bool(&self) -> Option<bool> {
22        let Some(v) = self.value.as_ref() else {
23            return None;
24        };
25        Some(v.as_bool().expect("value is not a boolean"))
26    }
27
28    pub fn as_int(&self) -> Option<i64> {
29        let Some(v) = self.value.as_ref() else {
30            return None;
31        };
32        Some(v.as_i64().expect("value is not a number"))
33    }
34}