refactor/tighten-architecture #26
12
Cargo.lock
generated
12
Cargo.lock
generated
@@ -324,7 +324,6 @@ dependencies = [
|
||||
"futures",
|
||||
"hex",
|
||||
"rand 0.9.4",
|
||||
"serde_json",
|
||||
"sha2",
|
||||
"tokio",
|
||||
"tracing",
|
||||
@@ -1910,9 +1909,7 @@ name = "export"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"async-stream",
|
||||
"async-trait",
|
||||
"bytes",
|
||||
"chrono",
|
||||
"domain",
|
||||
"futures",
|
||||
"serde_json",
|
||||
@@ -2414,18 +2411,15 @@ dependencies = [
|
||||
name = "http-axum"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"api-types",
|
||||
"application",
|
||||
"askama",
|
||||
"async-trait",
|
||||
"axum",
|
||||
"axum-governor",
|
||||
"bytes",
|
||||
"chrono",
|
||||
"chrono-tz",
|
||||
"domain",
|
||||
"dotenvy",
|
||||
"futures",
|
||||
"infer",
|
||||
"percent-encoding",
|
||||
@@ -2435,7 +2429,6 @@ dependencies = [
|
||||
"tower",
|
||||
"tower-http",
|
||||
"tracing",
|
||||
"tracing-subscriber",
|
||||
"utoipa",
|
||||
"utoipa-scalar",
|
||||
"utoipa-swagger-ui",
|
||||
@@ -3614,7 +3607,6 @@ dependencies = [
|
||||
"config",
|
||||
"domain",
|
||||
"futures",
|
||||
"infer",
|
||||
"object_store",
|
||||
"tokio",
|
||||
"tracing",
|
||||
@@ -5173,7 +5165,6 @@ dependencies = [
|
||||
"anyhow",
|
||||
"async-stream",
|
||||
"async-trait",
|
||||
"bytes",
|
||||
"chrono",
|
||||
"config",
|
||||
"domain",
|
||||
@@ -5782,15 +5773,12 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
|
||||
name = "tmdb-enrichment"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-trait",
|
||||
"chrono",
|
||||
"config",
|
||||
"domain",
|
||||
"reqwest 0.13.3",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"tracing",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use application::config::AppConfig;
|
||||
use application::config::AppSettings;
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct AppContext {
|
||||
pub deps: Arc<application::Deps>,
|
||||
pub services: application::Services,
|
||||
pub config: AppConfig,
|
||||
pub config: AppSettings,
|
||||
pub instance: domain::value_objects::InstanceIdentity,
|
||||
#[cfg(feature = "federation")]
|
||||
pub ap_document: Arc<dyn domain::ports::ApDocumentPort>,
|
||||
|
||||
@@ -2,26 +2,26 @@ use std::sync::Arc;
|
||||
|
||||
use domain::ports::{AuthService, PasswordHasher, RefreshSessionRepository, UserRepository};
|
||||
|
||||
use crate::config::AppConfig;
|
||||
use crate::config::AppSettings;
|
||||
|
||||
pub struct LoginDeps {
|
||||
pub user: Arc<dyn UserRepository>,
|
||||
pub password_hasher: Arc<dyn PasswordHasher>,
|
||||
pub auth: Arc<dyn AuthService>,
|
||||
pub refresh_session: Arc<dyn RefreshSessionRepository>,
|
||||
pub config: AppConfig,
|
||||
pub config: AppSettings,
|
||||
}
|
||||
|
||||
pub struct RegisterDeps {
|
||||
pub user: Arc<dyn UserRepository>,
|
||||
pub password_hasher: Arc<dyn PasswordHasher>,
|
||||
pub config: AppConfig,
|
||||
pub config: AppSettings,
|
||||
}
|
||||
|
||||
pub struct RefreshDeps {
|
||||
pub refresh_session: Arc<dyn RefreshSessionRepository>,
|
||||
pub auth: Arc<dyn AuthService>,
|
||||
pub config: AppConfig,
|
||||
pub config: AppSettings,
|
||||
}
|
||||
|
||||
pub struct RegisterAndLoginDeps {
|
||||
@@ -29,7 +29,7 @@ pub struct RegisterAndLoginDeps {
|
||||
pub password_hasher: Arc<dyn PasswordHasher>,
|
||||
pub auth: Arc<dyn AuthService>,
|
||||
pub refresh_session: Arc<dyn RefreshSessionRepository>,
|
||||
pub config: AppConfig,
|
||||
pub config: AppSettings,
|
||||
}
|
||||
|
||||
pub struct LogoutDeps {
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
#[derive(Clone)]
|
||||
pub struct AppConfig {
|
||||
pub struct AppSettings {
|
||||
pub allow_registration: bool,
|
||||
pub base_url: String,
|
||||
pub rate_limit: u64,
|
||||
pub refresh_ttl_seconds: u64,
|
||||
pub secure_cookies: bool,
|
||||
pub cors_origins: String,
|
||||
pub wrapup: WrapUpConfig,
|
||||
pub wrapup: WrapUpSettings,
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct WrapUpConfig {
|
||||
pub struct WrapUpSettings {
|
||||
pub font_path: Option<String>,
|
||||
pub logo_path: Option<String>,
|
||||
pub bg_dir: Option<String>,
|
||||
}
|
||||
|
||||
impl From<&::config::AppConfig> for AppConfig {
|
||||
impl From<&::config::AppConfig> for AppSettings {
|
||||
fn from(config: &::config::AppConfig) -> Self {
|
||||
Self {
|
||||
allow_registration: config.server.allow_registration,
|
||||
@@ -25,12 +25,12 @@ impl From<&::config::AppConfig> for AppConfig {
|
||||
refresh_ttl_seconds: config.auth.refresh_ttl_seconds,
|
||||
secure_cookies: config.server.secure_cookies,
|
||||
cors_origins: config.server.cors_origins.clone(),
|
||||
wrapup: WrapUpConfig::from(&config.wrapup),
|
||||
wrapup: WrapUpSettings::from(&config.wrapup),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<&::config::WrapUpConfig> for WrapUpConfig {
|
||||
impl From<&::config::WrapUpConfig> for WrapUpSettings {
|
||||
fn from(config: &::config::WrapUpConfig) -> Self {
|
||||
Self {
|
||||
font_path: config.font_path.clone(),
|
||||
|
||||
@@ -5,7 +5,7 @@ use domain::ports::{
|
||||
MovieProfileRepository, MovieQuery, ReviewRepository, UserRepository,
|
||||
};
|
||||
|
||||
use crate::config::AppConfig;
|
||||
use crate::config::AppSettings;
|
||||
|
||||
pub struct DeleteReviewDeps {
|
||||
pub review: Arc<dyn ReviewRepository>,
|
||||
@@ -28,7 +28,7 @@ pub struct GetMovieSocialPageDeps {
|
||||
pub struct GetActivityFeedDeps {
|
||||
pub diary: Arc<dyn DiaryQuery>,
|
||||
pub social_query: Arc<dyn FollowGraphQuery>,
|
||||
pub config: AppConfig,
|
||||
pub config: AppSettings,
|
||||
}
|
||||
|
||||
pub struct GetUserFeedDeps {
|
||||
|
||||
@@ -7,7 +7,7 @@ use domain::testing::InMemoryStore;
|
||||
use domain::value_objects::{FollowRelation, SocialActor, SocialIdentity, UserId};
|
||||
|
||||
use application::{
|
||||
config::AppConfig, diary::deps::GetActivityFeedDeps, diary::get_activity_feed,
|
||||
config::AppSettings, diary::deps::GetActivityFeedDeps, diary::get_activity_feed,
|
||||
diary::queries::GetActivityFeedQuery,
|
||||
};
|
||||
|
||||
@@ -125,14 +125,14 @@ async fn following_filter_separates_local_and_remote() {
|
||||
let deps = GetActivityFeedDeps {
|
||||
diary: domain::testing::FakeDiaryQuery::new() as _,
|
||||
social_query: social as _,
|
||||
config: AppConfig {
|
||||
config: AppSettings {
|
||||
allow_registration: true,
|
||||
base_url: "http://localhost:3000".into(),
|
||||
rate_limit: 20,
|
||||
refresh_ttl_seconds: 2_592_000,
|
||||
secure_cookies: false,
|
||||
cors_origins: String::new(),
|
||||
wrapup: application::config::WrapUpConfig {
|
||||
wrapup: application::config::WrapUpSettings {
|
||||
font_path: None,
|
||||
logo_path: None,
|
||||
bg_dir: None,
|
||||
|
||||
@@ -24,7 +24,7 @@ use domain::{
|
||||
use async_trait::async_trait;
|
||||
use domain::errors::DomainError;
|
||||
|
||||
use application::{config::AppConfig, diary::commands::LogReviewCommand, ports::ReviewLogger};
|
||||
use application::{config::AppSettings, diary::commands::LogReviewCommand, ports::ReviewLogger};
|
||||
|
||||
pub struct NoopReviewLogger;
|
||||
|
||||
@@ -73,7 +73,7 @@ pub struct TestContextBuilder {
|
||||
pub block_query: Arc<dyn domain::ports::BlockQuery>,
|
||||
pub federation_admin: Arc<dyn domain::ports::FederationAdminQuery>,
|
||||
pub refresh_session_repo: Arc<dyn RefreshSessionRepository>,
|
||||
pub config: AppConfig,
|
||||
pub config: AppSettings,
|
||||
}
|
||||
|
||||
impl Default for TestContextBuilder {
|
||||
@@ -123,14 +123,14 @@ impl TestContextBuilder {
|
||||
block_query: Arc::clone(&store) as _,
|
||||
federation_admin: Arc::new(NoopFederationAdminQuery),
|
||||
refresh_session_repo: Arc::clone(&store) as _,
|
||||
config: AppConfig {
|
||||
config: AppSettings {
|
||||
allow_registration: true,
|
||||
base_url: "http://localhost:3000".into(),
|
||||
rate_limit: 20,
|
||||
refresh_ttl_seconds: 2_592_000,
|
||||
secure_cookies: false,
|
||||
cors_origins: String::new(),
|
||||
wrapup: application::config::WrapUpConfig {
|
||||
wrapup: application::config::WrapUpSettings {
|
||||
font_path: None,
|
||||
logo_path: None,
|
||||
bg_dir: None,
|
||||
@@ -274,7 +274,7 @@ impl TestContextBuilder {
|
||||
self
|
||||
}
|
||||
|
||||
pub fn with_config(mut self, config: AppConfig) -> Self {
|
||||
pub fn with_config(mut self, config: AppSettings) -> Self {
|
||||
self.config = config;
|
||||
self
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ use crate::{DatabaseOutput, Repositories};
|
||||
pub fn build_deps(
|
||||
repos: &Repositories,
|
||||
services: &application::Services,
|
||||
config: &application::config::AppConfig,
|
||||
config: &application::config::AppSettings,
|
||||
instance: &InstanceIdentity,
|
||||
) -> Deps {
|
||||
Deps {
|
||||
|
||||
@@ -2,7 +2,7 @@ use std::net::SocketAddr;
|
||||
use std::sync::Arc;
|
||||
|
||||
use anyhow::Context;
|
||||
use application::config::AppConfig as AppSettings;
|
||||
use application::config::AppSettings;
|
||||
use domain::ports::{DiaryExporter, DocumentParser, EventPublisher};
|
||||
use domain::value_objects::InstanceIdentity;
|
||||
use export::ExportAdapter;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
//! `bootstrap::build_deps`, with per-port overrides injected BEFORE the deps are built.
|
||||
#![allow(dead_code)]
|
||||
|
||||
use application::config::AppConfig;
|
||||
use application::config::AppSettings;
|
||||
use bootstrap::Repositories;
|
||||
use domain::{
|
||||
errors::DomainError,
|
||||
@@ -100,14 +100,14 @@ pub fn build_test_state_from(
|
||||
person_enrichment: None,
|
||||
};
|
||||
|
||||
let config = AppConfig {
|
||||
let config = AppSettings {
|
||||
allow_registration: false,
|
||||
base_url: "http://localhost:3000".to_string(),
|
||||
rate_limit: 20,
|
||||
refresh_ttl_seconds: 2_592_000,
|
||||
secure_cookies: false,
|
||||
cors_origins: String::new(),
|
||||
wrapup: application::config::WrapUpConfig {
|
||||
wrapup: application::config::WrapUpSettings {
|
||||
font_path: None,
|
||||
logo_path: None,
|
||||
bg_dir: None,
|
||||
|
||||
Reference in New Issue
Block a user