Initial commit.
This commit is contained in:
@@ -0,0 +1 @@
|
||||
pub mod service;
|
||||
@@ -0,0 +1,46 @@
|
||||
use std::io::{Error, ErrorKind};
|
||||
use rand::distr::Alphanumeric;
|
||||
use rand::RngExt;
|
||||
use surveillant_systeme_domain::configuration::port::ConfigurationPort;
|
||||
|
||||
pub struct ConfigurationService {
|
||||
configuration_port: Box<dyn ConfigurationPort>
|
||||
}
|
||||
|
||||
impl ConfigurationService {
|
||||
pub fn new(configuration_repository: Box<dyn ConfigurationPort>) -> Self {
|
||||
Self { configuration_port: configuration_repository }
|
||||
}
|
||||
|
||||
pub fn create_initialisation_code(&self) -> Result<(), Error> {
|
||||
let initialisation_code = random_string();
|
||||
self.configuration_port.save(initialisation_code)
|
||||
}
|
||||
|
||||
pub fn get_initialisation_code(&self) -> Result<Option<String>, Error> {
|
||||
self.configuration_port.get_initialisation_code()
|
||||
.map_err(|database_error| Error::new(
|
||||
ErrorKind::Other,
|
||||
format!("Unable to retrieve the initialisation code… Cause: {}", database_error)
|
||||
))
|
||||
}
|
||||
|
||||
pub fn set_database_initialised(&self) -> Result<(), Error> {
|
||||
self.configuration_port.erase_initialisation_code()
|
||||
.map_err(|database_error| Error::new(
|
||||
ErrorKind::Other,
|
||||
format!("Unable to erase the initialisation code in database… Cause: {}", database_error)
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
impl Clone for ConfigurationService {
|
||||
fn clone(&self) -> Self {
|
||||
ConfigurationService::new(self.configuration_port.clone())
|
||||
}
|
||||
}
|
||||
|
||||
fn random_string() -> String {
|
||||
let mut rng = rand::rng();
|
||||
(0..10).map(|_| rng.sample(Alphanumeric) as char).collect()
|
||||
}
|
||||
Reference in New Issue
Block a user