fix(postgres): persist and read avatar_url in remote_actor adapter

This commit is contained in:
2026-05-14 19:57:13 +02:00
parent 82f8772104
commit 0e45707d7e

View File

@@ -18,14 +18,14 @@ impl PgRemoteActorRepository {
impl RemoteActorRepository for PgRemoteActorRepository { impl RemoteActorRepository for PgRemoteActorRepository {
async fn upsert(&self, a: &RemoteActor) -> Result<(), DomainError> { async fn upsert(&self, a: &RemoteActor) -> Result<(), DomainError> {
sqlx::query( sqlx::query(
"INSERT INTO remote_actors(url,handle,display_name,inbox_url,shared_inbox_url,public_key,last_fetched_at) "INSERT INTO remote_actors(url,handle,display_name,inbox_url,shared_inbox_url,public_key,avatar_url,last_fetched_at)
VALUES($1,$2,$3,$4,$5,$6,$7) VALUES($1,$2,$3,$4,$5,$6,$7,$8)
ON CONFLICT(url) DO UPDATE SET handle=EXCLUDED.handle,display_name=EXCLUDED.display_name, ON CONFLICT(url) DO UPDATE SET handle=EXCLUDED.handle,display_name=EXCLUDED.display_name,
inbox_url=EXCLUDED.inbox_url,shared_inbox_url=EXCLUDED.shared_inbox_url, inbox_url=EXCLUDED.inbox_url,shared_inbox_url=EXCLUDED.shared_inbox_url,
public_key=EXCLUDED.public_key,last_fetched_at=EXCLUDED.last_fetched_at" public_key=EXCLUDED.public_key,avatar_url=EXCLUDED.avatar_url,last_fetched_at=EXCLUDED.last_fetched_at"
) )
.bind(&a.url).bind(&a.handle).bind(&a.display_name).bind(&a.inbox_url) .bind(&a.url).bind(&a.handle).bind(&a.display_name).bind(&a.inbox_url)
.bind(&a.shared_inbox_url).bind(&a.public_key).bind(a.last_fetched_at) .bind(&a.shared_inbox_url).bind(&a.public_key).bind(&a.avatar_url).bind(a.last_fetched_at)
.execute(&self.pool).await.map_err(|e| DomainError::Internal(e.to_string())).map(|_| ()) .execute(&self.pool).await.map_err(|e| DomainError::Internal(e.to_string())).map(|_| ())
} }
@@ -38,12 +38,13 @@ impl RemoteActorRepository for PgRemoteActorRepository {
inbox_url: String, inbox_url: String,
shared_inbox_url: Option<String>, shared_inbox_url: Option<String>,
public_key: String, public_key: String,
avatar_url: Option<String>,
last_fetched_at: DateTime<Utc>, last_fetched_at: DateTime<Utc>,
} }
sqlx::query_as::<_, Row>( sqlx::query_as::<_, Row>(
"SELECT url,handle,display_name,inbox_url,shared_inbox_url,public_key,last_fetched_at FROM remote_actors WHERE url=$1" "SELECT url,handle,display_name,inbox_url,shared_inbox_url,public_key,avatar_url,last_fetched_at FROM remote_actors WHERE url=$1"
).bind(url).fetch_optional(&self.pool).await ).bind(url).fetch_optional(&self.pool).await
.map_err(|e| DomainError::Internal(e.to_string())) .map_err(|e| DomainError::Internal(e.to_string()))
.map(|o| o.map(|r| RemoteActor { url: r.url, handle: r.handle, display_name: r.display_name, inbox_url: r.inbox_url, shared_inbox_url: r.shared_inbox_url, public_key: r.public_key, avatar_url: None, last_fetched_at: r.last_fetched_at })) .map(|o| o.map(|r| RemoteActor { url: r.url, handle: r.handle, display_name: r.display_name, inbox_url: r.inbox_url, shared_inbox_url: r.shared_inbox_url, public_key: r.public_key, avatar_url: r.avatar_url, last_fetched_at: r.last_fetched_at }))
} }
} }