1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
use crate::files::FileService; use crate::project::service::ProjectService; use slog; use std::sync::{Arc, RwLock}; pub const APPNAME: &str = "dbui"; #[derive(Clone, Debug)] pub struct AppConfig { address: String, port: i32, verbose: bool, files: Arc<FileService>, projects: Arc<RwLock<ProjectService>>, root_logger: slog::Logger } impl AppConfig { pub fn new(cfg_dir: String, address: String, port: i32, verbose: bool, root_logger: slog::Logger) -> AppConfig { let files = Arc::new(FileService::new(&cfg_dir, &root_logger)); AppConfig { address, port, verbose, files: Arc::clone(&files), projects: Arc::new(RwLock::new(ProjectService::new(files, &root_logger))), root_logger } } pub fn address(&self) -> &String { &self.address } pub fn port(&self) -> i32 { self.port } pub fn verbose(&self) -> bool { self.verbose } pub fn files(&self) -> &FileService { &self.files } pub fn projects(&self) -> &RwLock<ProjectService> { &self.projects } pub fn root_logger(&self) -> &slog::Logger { &self.root_logger } }