Skip to content

feat(etl): port handle_comment/event/share triggers (parity 1D)#241

Open
raymondjacobson wants to merge 1 commit intoetl/parity-1c-content-triggersfrom
etl/parity-1d-secondary-triggers
Open

feat(etl): port handle_comment/event/share triggers (parity 1D)#241
raymondjacobson wants to merge 1 commit intoetl/parity-1c-content-triggersfrom
etl/parity-1d-secondary-triggers

Conversation

@raymondjacobson
Copy link
Copy Markdown
Contributor

Summary

Stack 1D of the trigger-port plan. Migration 0020 adds:

  • New aggregate columns: `aggregate_track.{comment_count,share_count}`, `aggregate_playlist.share_count`, `aggregate_user.track_share_count` (apps#0145).
  • `handle_comment` — maintains `aggregate_track.comment_count` from non-deleted, visible comments.
  • `handle_event` — creates `fan_remix_contest_started` notifications for followers + favoriters when a remix_contest event is added on a public track.
  • `handle_share` — maintains `aggregate_track.share_count` or `aggregate_playlist.share_count` and `aggregate_user.track_share_count`.

Skipped

`handle_supporter_rank_up` is intentionally not ported. It depends on `user_bank_txs` and `supporter_rank_ups` tables which are part of the Solana indexer (explicitly out of scope per the parity plan).

Stack context

Stacked on #240 (1C — content triggers).

Test plan

Three DB-backed tests in secondary_triggers_test.go:

  • `TestTrigger_HandleComment_TicksCommentCount` — comment insert ticks aggregate_track.comment_count
  • `TestTrigger_HandleShare_TicksTrackShareCount` — share insert ticks track + user share counts
  • `TestTrigger_HandleEvent_RemixContestNotifiesFollowers` — remix_contest event creates fan_remix_contest_started notification for followers
  • All 1B + 1C + 1D trigger tests pass together (no regressions)
  • `go build ./...` clean

🤖 Generated with Claude Code

Stack 1D of the trigger-port plan. Migration 0020 adds aggregate columns
and ports three of apps' four secondary triggers:

- aggregate_track.{comment_count,share_count} (apps#0145)
- aggregate_playlist.share_count
- aggregate_user.track_share_count
- handle_comment: maintains aggregate_track.comment_count.
- handle_event: creates fan_remix_contest_started notifications for
  followers + favoriters when a remix_contest event is added on a public
  track.
- handle_share: maintains aggregate_track.share_count or
  aggregate_playlist.share_count and aggregate_user.track_share_count.

Skipped: handle_supporter_rank_up depends on user_bank_txs and
supporter_rank_ups tables which are part of the Solana indexer (out of
scope per parity plan).

Three DB-backed tests verify comment_count tick, share_count tick on track,
and fan_remix_contest_started fan-out notification on event insert.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant