scratchstack_config/service/
sts.rs

1use {
2    super::{BaseServiceConfig, ResolvedBaseServiceConfig},
3    crate::{error::ConfigError, DatabaseConfig, ResolvedDatabaseConfig},
4    serde::Deserialize,
5    std::fmt::Debug,
6};
7
8const DEFAULT_PORT: u16 = 8190;
9
10/// Service configuration for Security Token Service (STS).
11#[derive(Debug, Deserialize)]
12pub struct Sts {
13    #[serde(flatten)]
14    pub base: BaseServiceConfig,
15
16    #[serde(rename = "database")]
17    pub database: DatabaseConfig,
18}
19
20#[derive(Debug)]
21pub struct ResolvedSts {
22    pub service: ResolvedBaseServiceConfig,
23    pub database: ResolvedDatabaseConfig,
24}
25
26impl Sts {
27    pub fn resolve(&self) -> Result<ResolvedSts, ConfigError> {
28        let service = self.base.resolve(DEFAULT_PORT)?;
29        let database = self.database.resolve()?;
30
31        Ok(ResolvedSts {
32            service,
33            database,
34        })
35    }
36}