diff --git a/bp/blog/ghost/ghost_sync.py b/bp/blog/ghost/ghost_sync.py index 4bb799b..0e1d6ec 100644 --- a/bp/blog/ghost/ghost_sync.py +++ b/bp/blog/ghost/ghost_sync.py @@ -1066,7 +1066,25 @@ async def sync_single_page(sess: AsyncSession, ghost_id: str) -> None: tag_obj = await _upsert_tag(sess, pt) tag_map[pt["id"]] = tag_obj - await _upsert_post(sess, gp, author_map, tag_map) + post = await _upsert_post(sess, gp, author_map, tag_map) + + # Emit federation event for published pages + if post.status == "published" and post.user_id: + from shared.events import emit_event + from shared.infrastructure.urls import app_url + event_type = "post.published" if post.created_at == post.updated_at else "post.updated" + await emit_event( + sess, + event_type=event_type, + aggregate_type="Post", + aggregate_id=post.id, + payload={ + "user_id": post.user_id, + "title": post.title or "", + "excerpt": post.custom_excerpt or post.excerpt or "", + "url": app_url("coop", f"/{post.slug}/"), + }, + ) async def sync_single_author(sess: AsyncSession, ghost_id: str) -> None: diff --git a/services/__init__.py b/services/__init__.py index effaa97..d1baee4 100644 --- a/services/__init__.py +++ b/services/__init__.py @@ -24,5 +24,5 @@ def register_domain_services() -> None: if not services.has("cart"): services.cart = SqlCartService() if not services.has("federation"): - from shared.services.stubs import StubFederationService - services.federation = StubFederationService() + from shared.services.federation_impl import SqlFederationService + services.federation = SqlFederationService() diff --git a/shared b/shared index 1d83a33..68941b9 160000 --- a/shared +++ b/shared @@ -1 +1 @@ -Subproject commit 1d83a339b6008b1743846ea5ab32fe15abe644a9 +Subproject commit 68941b97f6b3cdcfb33de598c0b5d227e58e22cd