Publish Project State after lifecycle changes

Signed-off-by: John Tennant <jtennant@squareup.com>
This commit is contained in:
John Tennant
2026-09-01 12:52:35 -04:00
parent 2d02152cb4
commit dfed8c65fe

View File

@@ -3240,6 +3240,16 @@ async fn ingest_event_inner(
});
}
let project_lifecycle_coordinate = if kind_u32 == KIND_PROJECT {
Some((
event.pubkey.to_bytes().to_vec(),
buzz_db::event::extract_d_tag(&event).unwrap_or_default(),
))
} else {
project_deletion
.as_ref()
.map(|target| (target.owner.clone(), target.d_tag.clone()))
};
let project_lifecycle = if kind_u32 == KIND_PROJECT {
Some(
state
@@ -3334,6 +3344,16 @@ async fn ingest_event_inner(
};
if !was_inserted {
if let Some((owner, d_tag)) = project_lifecycle_coordinate.as_ref() {
if let Err(error) =
super::project_state_projection::publish_project_state_for_coordinate(
tenant, state, owner, d_tag,
)
.await
{
warn!(%error, "Project State projection repair failed after duplicate lifecycle event");
}
}
return Ok(IngestResult {
event_id: event_id_hex,
accepted: true,
@@ -3409,6 +3429,16 @@ async fn ingest_event_inner(
)
.await;
if let Some((owner, d_tag)) = project_lifecycle_coordinate.as_ref() {
if let Err(error) = super::project_state_projection::publish_project_state_for_coordinate(
tenant, state, owner, d_tag,
)
.await
{
warn!(%error, "Project State projection failed after lifecycle event");
}
}
info!(event_id = %event_id_hex, kind = kind_u32, "Event ingested via pipeline");
Ok(IngestResult {