fix: NewRemoteReview param struct, atomic review+orphan movie delete

This commit is contained in:
2026-10-26 01:19:09 +01:00
parent 9a4d0c1714
commit 7f9c252d35
18 changed files with 261 additions and 116 deletions

View File

@@ -1,27 +1,23 @@
use activitypub::{RemoteReviewRepository, RemoteReviewUpdate};
use activitypub::{NewRemoteReview, RemoteReviewRepository, RemoteReviewUpdate};
use anyhow::{Result, anyhow};
use async_trait::async_trait;
use domain::{
events::DomainEvent,
models::{Review, ReviewSource},
};
use domain::models::ReviewSource;
use super::SqliteFederationRepository;
use sqlite::persistence::{datetime_to_str, enqueue_events};
#[async_trait]
impl RemoteReviewRepository for SqliteFederationRepository {
#[allow(clippy::too_many_arguments)]
async fn save_remote_review(
&self,
review: &Review,
ap_id: &str,
movie_title: &str,
release_year: u16,
external_metadata_id: Option<&str>,
poster_url: Option<&str>,
events: &[DomainEvent],
) -> Result<()> {
async fn save_remote_review(&self, new: NewRemoteReview<'_>) -> Result<()> {
let NewRemoteReview {
review,
ap_id,
movie_title,
release_year,
external_metadata_id,
poster_url,
events,
} = new;
let actor_url = match review.source() {
ReviewSource::Remote { actor_url } => actor_url.clone(),
ReviewSource::Local => {

View File

@@ -1,6 +1,6 @@
//! A remote review and the enrichment request it triggers commit together.
use activitypub::RemoteReviewRepository;
use activitypub::{NewRemoteReview, RemoteReviewRepository};
use domain::{
events::DomainEvent,
models::{PersistedReview, Review, ReviewSource},
@@ -56,15 +56,15 @@ fn enrichment_requested(movie_id: &MovieId) -> DomainEvent {
async fn save(pool: &SqlitePool, review: &Review, events: &[DomainEvent]) -> anyhow::Result<()> {
SqliteFederationRepository::new(pool.clone())
.save_remote_review(
.save_remote_review(NewRemoteReview {
review,
AP_ID,
"The Matrix",
1999,
Some("tmdb:603"),
None,
ap_id: AP_ID,
movie_title: "The Matrix",
release_year: 1999,
external_metadata_id: Some("tmdb:603"),
poster_url: None,
events,
)
})
.await
}