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 56 57 58 59 60 61 62
use crate::config::CmsConfig; use crate::repository::CmsRepositoryManager; use crate::service::content::ContentService; use crate::service::project::ProjectService; use crate::service::schema::SchemaService; use lightspeed_core::error::LightSpeedError; use log::*; pub mod config; pub mod dto; pub mod model; pub mod repository; pub mod service; #[derive(Clone)] pub struct CmsModule<RepoManager: CmsRepositoryManager> { pub cms_config: CmsConfig, pub repo_manager: RepoManager, pub content_service: ContentService<RepoManager>, pub project_service: ProjectService<RepoManager>, pub schema_service: SchemaService<RepoManager>, } impl<RepoManager: CmsRepositoryManager> CmsModule<RepoManager> { pub fn new(repo_manager: RepoManager, cms_config: CmsConfig) -> Self { println!("Creating CmsModule"); info!("Creating CmsModule"); let content_service = ContentService::new(repo_manager.c3p0().clone(), repo_manager.clone()); let schema_service = SchemaService::new(repo_manager.c3p0().clone(), repo_manager.schema_repo()); let project_service = ProjectService::new( repo_manager.c3p0().clone(), repo_manager.project_repo(), schema_service.clone(), ); CmsModule { cms_config, repo_manager, content_service, project_service, schema_service, } } } #[async_trait::async_trait(?Send)] impl<RepoManager: CmsRepositoryManager> lightspeed_core::module::Module for CmsModule<RepoManager> { async fn start(&mut self) -> Result<(), LightSpeedError> { info!("Starting CmsModule"); self.repo_manager.start().await?; Ok(()) } }