refactor/tighten-architecture #26

Merged
GKaszewski merged 104 commits from refactor/tighten-architecture into master 2026-10-26 09:36:27 +00:00
8 changed files with 22 additions and 23 deletions
Showing only changes of commit 699f7b7128 - Show all commits

View File

@@ -26,7 +26,7 @@ cd spa && bun install && bun run dev
make check # the full gate; plain `make` runs it too
```
`make check` runs, in order: `fmt-check`, `clippy` (workspace, all targets, `-D warnings`), `test`, `test-federation-off` (workspace tests with default features off), then the layering guards (`check-appcontext`, `check-handler-deps`, `check-handler-repos`, `check-http-adapter-deps`, `check-federation-off-social`, `check-sqlite-is-ap-free`, `check-binaries-are-thin`, `check-dockerfile-manifests`). CI runs the same steps.
`make check` runs, in order: `fmt-check`, `clippy` (workspace, all targets, `-D warnings`), `test`, `test-federation-off` (workspace tests with default features off), then the layering guards (`check-appcontext`, `check-handler-deps`, `check-handler-repos`, `check-http-adapter-deps`, `check-federation-off-social`, `check-sqlite-is-ap-free`, `check-binaries-are-thin`, `check-federation-off-deps`, `check-nats-isolated`, `check-no-second-web-stack`). CI runs the same steps.
For the SPA also run:

20
Cargo.lock generated
View File

@@ -757,7 +757,7 @@ dependencies = [
"object-storage",
"poster-fetcher",
"reqwest 0.13.3",
"rss 0.1.0",
"rss-adapter",
"rustls",
"serde_json",
"sqlite",
@@ -4352,15 +4352,6 @@ dependencies = [
"zeroize",
]
[[package]]
name = "rss"
version = "0.1.0"
dependencies = [
"chrono",
"domain",
"rss 2.0.13",
]
[[package]]
name = "rss"
version = "2.0.13"
@@ -4372,6 +4363,15 @@ dependencies = [
"quick-xml 0.39.4",
]
[[package]]
name = "rss-adapter"
version = "0.1.0"
dependencies = [
"chrono",
"domain",
"rss",
]
[[package]]
name = "rust-embed"
version = "8.11.0"

View File

@@ -5,7 +5,7 @@ default-members = [
"crates/adapters/metadata",
"crates/adapters/poster-fetcher",
"crates/adapters/object-storage",
"crates/adapters/rss",
"crates/adapters/rss-adapter",
"crates/adapters/sqlite",
"crates/adapters/sqlite-federation",
"crates/adapters/activitypub",
@@ -31,7 +31,7 @@ members = [
"crates/adapters/metadata",
"crates/adapters/poster-fetcher",
"crates/adapters/object-storage",
"crates/adapters/rss",
"crates/adapters/rss-adapter",
"crates/adapters/sqlite",
"crates/adapters/sqlite-federation",
"crates/adapters/activitypub",
@@ -110,7 +110,7 @@ calamine = "0.35"
image = { version = "0.25", default-features = false }
ravif = { version = "0.11", default-features = false }
webp = "0.3"
rss-feed = { package = "rss", version = "2" }
rss = { version = "2" }
ratatui = "0.30.0"
keyring-core = "1.0.0"
directories = "6"
@@ -126,7 +126,7 @@ metadata = { path = "crates/adapters/metadata" }
poster-fetcher = { path = "crates/adapters/poster-fetcher" }
object-storage = { path = "crates/adapters/object-storage" }
event-publisher = { path = "crates/adapters/event-publisher" }
rss = { path = "crates/adapters/rss" }
rss-adapter = { path = "crates/adapters/rss-adapter" }
export = { path = "crates/adapters/export" }
sqlite = { path = "crates/adapters/sqlite" }
sqlite-federation = { path = "crates/adapters/sqlite-federation" }
@@ -146,5 +146,4 @@ opt-level = 2 # compile deps faster at runtime; paid once, cached
[profile.release]
codegen-units = 1
lto = "thin"
strip = true

View File

@@ -1,10 +1,10 @@
[package]
name = "rss"
name = "rss-adapter"
version = "0.1.0"
edition.workspace = true
[dependencies]
rss-feed = { workspace = true, features = ["atom"] }
rss = { workspace = true, features = ["atom"] }
domain = { workspace = true }
[dev-dependencies]

View File

@@ -1,8 +1,8 @@
use domain::errors::DomainError;
use domain::models::DiaryEntry;
use domain::ports::{FeedChannel, RssFeedRenderer};
use rss_feed::extension::atom::{self, AtomExtensionBuilder, Link};
use rss_feed::{ChannelBuilder, GuidBuilder, ItemBuilder};
use rss::extension::atom::{self, AtomExtensionBuilder, Link};
use rss::{ChannelBuilder, GuidBuilder, ItemBuilder};
pub struct RssAdapter {
base_url: String,

View File

@@ -3,7 +3,7 @@ use domain::models::ReviewEdit;
use domain::ports::{FeedChannel, RssFeedRenderer};
use domain::testing::{test_movie_with_year, test_review};
use domain::value_objects::{Comment, UserId};
use rss::RssAdapter;
use rss_adapter::RssAdapter;
fn channel<'a>(title: &'a str) -> FeedChannel<'a> {
FeedChannel {

View File

@@ -26,7 +26,7 @@ tmdb-enrichment = { workspace = true }
image-converter = { workspace = true }
export = { workspace = true }
importer = { workspace = true }
rss = { workspace = true }
rss-adapter = { workspace = true }
media-server = { workspace = true }
sqlite = { workspace = true }
sqlx = { workspace = true }

View File

@@ -9,7 +9,7 @@ use export::ExportAdapter;
use http_axum::context::AppContext;
use http_axum::{openapi, router, state::AppState};
use importer::ImporterDocumentParser;
use rss::RssAdapter;
use rss_adapter::RssAdapter;
use crate::database::{self, DatabaseOutput};
use crate::{Repositories, event_bus, federation};