From d23a4788fb9440d8a2dbbda89e23bc459a2d0f54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20St=C3=BCrmer?= Date: Tue, 29 Aug 2023 07:18:11 +0200 Subject: [PATCH] move config into common --- Cargo.lock | 2 ++ crates/common/Cargo.toml | 10 +++++---- {src => crates/common/src}/config/client.rs | 0 .../common/src}/config/configuration.rs | 0 {src => crates/common/src}/config/mod.rs | 0 {src => crates/common/src}/config/plugin.rs | 0 crates/common/src/lib.rs | 1 + crates/database/Cargo.toml | 2 +- crates/media/src/api/router.rs | 7 +++--- src/lib.rs | 22 ++++++++++--------- src/plugin/plugin_manager.rs | 3 ++- 11 files changed, 28 insertions(+), 19 deletions(-) rename {src => crates/common/src}/config/client.rs (100%) rename {src => crates/common/src}/config/configuration.rs (100%) rename {src => crates/common/src}/config/mod.rs (100%) rename {src => crates/common/src}/config/plugin.rs (100%) diff --git a/Cargo.lock b/Cargo.lock index a1dfa12..6794f15 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -753,7 +753,9 @@ dependencies = [ "http", "sea-orm", "serde", + "serde_json", "time 0.3.27", + "tracing", "uuid", ] diff --git a/crates/common/Cargo.toml b/crates/common/Cargo.toml index 233d51e..6a03845 100644 --- a/crates/common/Cargo.toml +++ b/crates/common/Cargo.toml @@ -16,10 +16,12 @@ path = "src/lib.rs" doctest = false [dependencies] -async-trait = { workspace = true } -axum = { workspace = true } -http = { workspace = true } +async-trait.workspace = true +axum.workspace = true +http.workspace = true sea-orm = { workspace = true, features = ["sqlx-postgres", "runtime-tokio-rustls"] } serde = { workspace = true, features = ["derive"] } -time = { workspace = true } +serde_json.workspace = true +time.workspace = true +tracing.workspace = true uuid = { workspace = true, features = ["serde"] } diff --git a/src/config/client.rs b/crates/common/src/config/client.rs similarity index 100% rename from src/config/client.rs rename to crates/common/src/config/client.rs diff --git a/src/config/configuration.rs b/crates/common/src/config/configuration.rs similarity index 100% rename from src/config/configuration.rs rename to crates/common/src/config/configuration.rs diff --git a/src/config/mod.rs b/crates/common/src/config/mod.rs similarity index 100% rename from src/config/mod.rs rename to crates/common/src/config/mod.rs diff --git a/src/config/plugin.rs b/crates/common/src/config/plugin.rs similarity index 100% rename from src/config/plugin.rs rename to crates/common/src/config/plugin.rs diff --git a/crates/common/src/lib.rs b/crates/common/src/lib.rs index a4fb1fe..df8467f 100644 --- a/crates/common/src/lib.rs +++ b/crates/common/src/lib.rs @@ -17,6 +17,7 @@ //! This crate offers shared data models for [Photos.network](https://photos.network) core application. //! +pub mod config; pub mod http; pub mod model { pub mod auth; diff --git a/crates/database/Cargo.toml b/crates/database/Cargo.toml index 4db2262..9f40b91 100644 --- a/crates/database/Cargo.toml +++ b/crates/database/Cargo.toml @@ -17,4 +17,4 @@ doctest = false [dependencies] async-trait = { workspace = true } -sea-orm = { workspace = true, features = ["sqlx-postgres", "runtime-tokio-rustls", "mock"] } +sea-orm = { workspace = true, features = ["sqlx-sqlite", "sqlx-postgres", "sqlx-mysql", "runtime-tokio-rustls", "macros", "mock", "with-time", "with-uuid" ] } diff --git a/crates/media/src/api/router.rs b/crates/media/src/api/router.rs index b2bb7c9..690a5e3 100644 --- a/crates/media/src/api/router.rs +++ b/crates/media/src/api/router.rs @@ -42,10 +42,11 @@ impl MediaApi { where S: Send + Sync + 'static + Clone, { - let media_repository: MediaRepositoryState = Arc::new(MediaRepository { + let media_repository: MediaRepository = MediaRepository { db_url: "", db: sea_orm::DatabaseConnection::Disconnected, - }); + }; + let repository_state: MediaRepositoryState = Arc::new(media_repository); Router::new() // Returns a list of owned media items for current user @@ -86,7 +87,7 @@ impl MediaApi { // unshares the given album .route("/albums/:entity_id/unshare", patch(patch_albums_id_unshare)) .layer(tower_http::trace::TraceLayer::new_for_http()) - .with_state(media_repository) + .with_state(repository_state) } } diff --git a/src/lib.rs b/src/lib.rs index 70c822b..681a57c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -54,10 +54,9 @@ use tower_http::trace::TraceLayer; use tracing::{debug, error, info}; use tracing_subscriber::{fmt, layer::SubscriberExt}; -use config::configuration::Configuration; +use common::config::configuration::Configuration; use plugin::plugin_manager::PluginManager; -pub mod config; pub mod plugin; const CONFIG_PATH: &str = "./config/core.json"; @@ -92,20 +91,20 @@ pub async fn start_server() -> Result<()> { fs::create_dir_all("plugins")?; // read config file - let config = Configuration::new(CONFIG_PATH).expect("Could not parse configuration!"); - debug!("Configuration: {}", config); + let configuration = Configuration::new(CONFIG_PATH).expect("Could not parse configuration!"); + debug!("Configuration: {}", configuration); // init application state - let mut app_state = ApplicationState::new(config.clone()); + let mut app_state = ApplicationState::new(configuration.clone()); let cfg = ServerConfig { - listen_addr: config.internal_url.to_owned(), - domain: config.external_url.to_owned(), + listen_addr: configuration.internal_url.to_owned(), + domain: configuration.external_url.to_owned(), use_ssl: true, realm_keys_base_path: Path::new("config").to_path_buf(), realms: vec![ConfigRealm { name: String::from("master"), - domain: Some(config.external_url.to_owned()), + domain: Some(configuration.external_url.to_owned()), clients: vec![Client { id: String::from("mobile-app"), secret: None, @@ -151,8 +150,11 @@ pub async fn start_server() -> Result<()> { app_state.router = Some(router); // initialize plugin manager - let mut plugin_manager = - PluginManager::new(config.clone(), PLUGIN_PATH.to_string(), &mut app_state)?; + let mut plugin_manager = PluginManager::new( + configuration.clone(), + PLUGIN_PATH.to_string(), + &mut app_state, + )?; match plugin_manager.init().await { Ok(_) => info!("PluginManager: initialization succed."), diff --git a/src/plugin/plugin_manager.rs b/src/plugin/plugin_manager.rs index 7a30ae6..ac20cad 100644 --- a/src/plugin/plugin_manager.rs +++ b/src/plugin/plugin_manager.rs @@ -20,8 +20,9 @@ use std::path::PathBuf; use abi_stable::library::{lib_header_from_path, LibrarySuffix, RawLibrary}; use anyhow::Result; +use common::config::configuration::Configuration; -use crate::{config::configuration::Configuration, ApplicationState}; +use crate::ApplicationState; use core_extensions::SelfOps; use photos_network_plugin::{PluginFactoryRef, PluginId}; use tracing::{debug, error, info};