Compare commits

...

1 Commits

Author SHA1 Message Date
giles
1d83a339b6 Upsert followers in add_follower to prevent IntegrityError
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 22:43:20 +00:00

View File

@@ -286,6 +286,23 @@ class SqlFederationService:
if actor is None:
raise ValueError(f"Actor not found: {username}")
# Upsert: update if already following, insert if new
existing = (
await session.execute(
select(APFollower).where(
APFollower.actor_profile_id == actor.id,
APFollower.follower_acct == follower_acct,
)
)
).scalar_one_or_none()
if existing:
existing.follower_inbox = follower_inbox
existing.follower_actor_url = follower_actor_url
existing.follower_public_key = follower_public_key
await session.flush()
return _follower_to_dto(existing)
follower = APFollower(
actor_profile_id=actor.id,
follower_acct=follower_acct,