fix: clippy too-many-args on update_remote_review, use RemoteReviewUpdate struct
This commit is contained in:
@@ -22,7 +22,7 @@ pub use k_ap::{
|
|||||||
|
|
||||||
pub use event_handler::ActivityPubEventHandler;
|
pub use event_handler::ActivityPubEventHandler;
|
||||||
pub use port::{ActivityPubPort, NoopActivityPubService};
|
pub use port::{ActivityPubPort, NoopActivityPubService};
|
||||||
pub use remote_review_repository::RemoteReviewRepository;
|
pub use remote_review_repository::{RemoteReviewRepository, RemoteReviewUpdate};
|
||||||
pub use review_handler::ReviewObjectHandler;
|
pub use review_handler::ReviewObjectHandler;
|
||||||
pub use user_adapter::DomainUserRepoAdapter;
|
pub use user_adapter::DomainUserRepoAdapter;
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,16 @@ use async_trait::async_trait;
|
|||||||
use chrono::NaiveDateTime;
|
use chrono::NaiveDateTime;
|
||||||
use domain::models::Review;
|
use domain::models::Review;
|
||||||
|
|
||||||
|
pub struct RemoteReviewUpdate<'a> {
|
||||||
|
pub ap_id: &'a str,
|
||||||
|
pub actor_url: &'a str,
|
||||||
|
pub rating: u8,
|
||||||
|
pub comment: Option<&'a str>,
|
||||||
|
pub watched_at: NaiveDateTime,
|
||||||
|
pub poster_url: Option<&'a str>,
|
||||||
|
pub watch_medium: Option<&'a str>,
|
||||||
|
}
|
||||||
|
|
||||||
#[async_trait]
|
#[async_trait]
|
||||||
pub trait RemoteReviewRepository: Send + Sync {
|
pub trait RemoteReviewRepository: Send + Sync {
|
||||||
async fn save_remote_review(
|
async fn save_remote_review(
|
||||||
@@ -17,16 +27,7 @@ pub trait RemoteReviewRepository: Send + Sync {
|
|||||||
|
|
||||||
async fn delete_remote_review(&self, ap_id: &str, actor_url: &str) -> Result<()>;
|
async fn delete_remote_review(&self, ap_id: &str, actor_url: &str) -> Result<()>;
|
||||||
|
|
||||||
async fn update_remote_review(
|
async fn update_remote_review(&self, update: RemoteReviewUpdate<'_>) -> Result<()>;
|
||||||
&self,
|
|
||||||
ap_id: &str,
|
|
||||||
actor_url: &str,
|
|
||||||
rating: u8,
|
|
||||||
comment: Option<&str>,
|
|
||||||
watched_at: NaiveDateTime,
|
|
||||||
poster_url: Option<&str>,
|
|
||||||
watch_medium: Option<&str>,
|
|
||||||
) -> Result<()>;
|
|
||||||
|
|
||||||
async fn delete_by_actor(&self, actor_url: &str) -> Result<()>;
|
async fn delete_by_actor(&self, actor_url: &str) -> Result<()>;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -188,15 +188,15 @@ impl ApObjectHandler for ReviewObjectHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
self.review_store
|
self.review_store
|
||||||
.update_remote_review(
|
.update_remote_review(crate::remote_review_repository::RemoteReviewUpdate {
|
||||||
ap_id.as_str(),
|
ap_id: ap_id.as_str(),
|
||||||
actor_url.as_str(),
|
actor_url: actor_url.as_str(),
|
||||||
obj.rating.min(5),
|
rating: obj.rating.min(5),
|
||||||
obj.comment.as_deref(),
|
comment: obj.comment.as_deref(),
|
||||||
obj.watched_at.naive_utc(),
|
watched_at: obj.watched_at.naive_utc(),
|
||||||
obj.poster_url.as_deref(),
|
poster_url: obj.poster_url.as_deref(),
|
||||||
obj.watch_medium.as_deref(),
|
watch_medium: obj.watch_medium.as_deref(),
|
||||||
)
|
})
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
use activitypub::RemoteReviewRepository;
|
use activitypub::{RemoteReviewRepository, RemoteReviewUpdate};
|
||||||
use anyhow::{Result, anyhow};
|
use anyhow::{Result, anyhow};
|
||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
use domain::models::{Review, ReviewSource};
|
use domain::models::{Review, ReviewSource};
|
||||||
@@ -71,37 +71,28 @@ impl RemoteReviewRepository for PostgresFederationRepository {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn update_remote_review(
|
async fn update_remote_review(&self, u: RemoteReviewUpdate<'_>) -> Result<()> {
|
||||||
&self,
|
let watched_at_str = datetime_to_str(&u.watched_at);
|
||||||
ap_id: &str,
|
|
||||||
actor_url: &str,
|
|
||||||
rating: u8,
|
|
||||||
comment: Option<&str>,
|
|
||||||
watched_at: chrono::NaiveDateTime,
|
|
||||||
poster_url: Option<&str>,
|
|
||||||
watch_medium: Option<&str>,
|
|
||||||
) -> Result<()> {
|
|
||||||
let watched_at_str = datetime_to_str(&watched_at);
|
|
||||||
sqlx::query(
|
sqlx::query(
|
||||||
"UPDATE reviews SET rating = $1, comment = $2, watched_at = $3::timestamptz, watch_medium = $4
|
"UPDATE reviews SET rating = $1, comment = $2, watched_at = $3::timestamptz, watch_medium = $4
|
||||||
WHERE ap_id = $5 AND remote_actor_url = $6",
|
WHERE ap_id = $5 AND remote_actor_url = $6",
|
||||||
)
|
)
|
||||||
.bind(rating as i64)
|
.bind(u.rating as i64)
|
||||||
.bind(comment)
|
.bind(u.comment)
|
||||||
.bind(&watched_at_str)
|
.bind(&watched_at_str)
|
||||||
.bind(watch_medium)
|
.bind(u.watch_medium)
|
||||||
.bind(ap_id)
|
.bind(u.ap_id)
|
||||||
.bind(actor_url)
|
.bind(u.actor_url)
|
||||||
.execute(&self.pool)
|
.execute(&self.pool)
|
||||||
.await?;
|
.await?;
|
||||||
if let Some(url) = poster_url {
|
if let Some(url) = u.poster_url {
|
||||||
sqlx::query(
|
sqlx::query(
|
||||||
"UPDATE movies SET poster_path = $1
|
"UPDATE movies SET poster_path = $1
|
||||||
WHERE id = (SELECT movie_id FROM reviews WHERE ap_id = $2 AND remote_actor_url = $3)",
|
WHERE id = (SELECT movie_id FROM reviews WHERE ap_id = $2 AND remote_actor_url = $3)",
|
||||||
)
|
)
|
||||||
.bind(url)
|
.bind(url)
|
||||||
.bind(ap_id)
|
.bind(u.ap_id)
|
||||||
.bind(actor_url)
|
.bind(u.actor_url)
|
||||||
.execute(&self.pool)
|
.execute(&self.pool)
|
||||||
.await?;
|
.await?;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
use activitypub::RemoteReviewRepository;
|
use activitypub::{RemoteReviewRepository, RemoteReviewUpdate};
|
||||||
use anyhow::{Result, anyhow};
|
use anyhow::{Result, anyhow};
|
||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
use domain::models::{Review, ReviewSource};
|
use domain::models::{Review, ReviewSource};
|
||||||
@@ -71,37 +71,28 @@ impl RemoteReviewRepository for SqliteFederationRepository {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn update_remote_review(
|
async fn update_remote_review(&self, u: RemoteReviewUpdate<'_>) -> Result<()> {
|
||||||
&self,
|
let watched_at_str = datetime_to_str(&u.watched_at);
|
||||||
ap_id: &str,
|
|
||||||
actor_url: &str,
|
|
||||||
rating: u8,
|
|
||||||
comment: Option<&str>,
|
|
||||||
watched_at: chrono::NaiveDateTime,
|
|
||||||
poster_url: Option<&str>,
|
|
||||||
watch_medium: Option<&str>,
|
|
||||||
) -> Result<()> {
|
|
||||||
let watched_at_str = datetime_to_str(&watched_at);
|
|
||||||
sqlx::query(
|
sqlx::query(
|
||||||
"UPDATE reviews SET rating = ?, comment = ?, watched_at = ?, watch_medium = ?
|
"UPDATE reviews SET rating = ?, comment = ?, watched_at = ?, watch_medium = ?
|
||||||
WHERE ap_id = ? AND remote_actor_url = ?",
|
WHERE ap_id = ? AND remote_actor_url = ?",
|
||||||
)
|
)
|
||||||
.bind(rating as i64)
|
.bind(u.rating as i64)
|
||||||
.bind(comment)
|
.bind(u.comment)
|
||||||
.bind(&watched_at_str)
|
.bind(&watched_at_str)
|
||||||
.bind(watch_medium)
|
.bind(u.watch_medium)
|
||||||
.bind(ap_id)
|
.bind(u.ap_id)
|
||||||
.bind(actor_url)
|
.bind(u.actor_url)
|
||||||
.execute(&self.pool)
|
.execute(&self.pool)
|
||||||
.await?;
|
.await?;
|
||||||
if let Some(url) = poster_url {
|
if let Some(url) = u.poster_url {
|
||||||
sqlx::query(
|
sqlx::query(
|
||||||
"UPDATE movies SET poster_path = ?
|
"UPDATE movies SET poster_path = ?
|
||||||
WHERE id = (SELECT movie_id FROM reviews WHERE ap_id = ? AND remote_actor_url = ?)",
|
WHERE id = (SELECT movie_id FROM reviews WHERE ap_id = ? AND remote_actor_url = ?)",
|
||||||
)
|
)
|
||||||
.bind(url)
|
.bind(url)
|
||||||
.bind(ap_id)
|
.bind(u.ap_id)
|
||||||
.bind(actor_url)
|
.bind(u.actor_url)
|
||||||
.execute(&self.pool)
|
.execute(&self.pool)
|
||||||
.await?;
|
.await?;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user