scsys_config/services/
database.rs1#[doc(inline)]
6pub use self::db_uri::*;
7
8pub(crate) mod db_uri;
9
10#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
13#[cfg_attr(
14 feature = "serde",
15 derive(serde::Deserialize, serde::Serialize),
16 serde(default, rename_all = "snake_case")
17)]
18pub struct StandardDatabaseConfig {
19 pub connection: DatabaseUriSchema,
21 pub max_connections: u32,
22 pub pool_size: u32,
23}
24
25impl StandardDatabaseConfig {
26 const DEFAULT_MAX_CONNECTIONS: u32 = 10;
27 const DEFAULT_DB_POOL_SIZE: u32 = 10;
28
29 pub fn new() -> Self {
31 Self::from_schema(Default::default())
32 }
33 pub fn from_schema(connection: DatabaseUriSchema) -> Self {
35 Self {
36 connection,
37 max_connections: StandardDatabaseConfig::DEFAULT_MAX_CONNECTIONS,
38 pool_size: StandardDatabaseConfig::DEFAULT_DB_POOL_SIZE,
39 }
40 }
41 pub fn from_uri(uri: &str) -> crate::Result<Self> {
43 use core::str::FromStr;
44 let schema = DatabaseUriSchema::from_str(uri)?;
45 let inst = Self::from_schema(schema);
47 Ok(inst)
48 }
49 pub const fn connection(&self) -> &DatabaseUriSchema {
51 &self.connection
52 }
53
54 pub const fn pool_size(&self) -> u32 {
56 self.pool_size
57 }
58}
59
60impl Default for StandardDatabaseConfig {
61 fn default() -> Self {
62 Self::new()
63 }
64}