Skip to content

Wire stream event handlers to persistence #52

Description

@pragmaticAweds

Context

The streams package now has Stream, WithdrawalAction, and CancelAction entities plus handlers for created, funded, withdrawal, and cancel events. Several handlers still only validate/log events and return success, so indexed stream events do not fully update persistent state yet.

Scope

  • Add a streams repository/service for Stream, WithdrawalAction, and CancelAction writes
  • Persist stream creation from StreamCreated events
  • Apply funded events to stream totals or funding state as defined by the schema
  • Persist withdrawal actions and update withdrawn totals idempotently
  • Persist cancel actions and mark streams canceled idempotently
  • Add tests that prove duplicate event processing does not double-count amounts

Out of Scope

  • Defining new Soroban event shapes
  • Distribution domain persistence
  • GraphQL API resolvers
  • Broad poller refactors outside handler persistence wiring

Acceptance Criteria

  • Stream handlers write durable database state through a repository/service
  • Handler tests cover create, fund, withdraw, cancel, duplicate replay, and missing stream cases
  • Numeric token amounts are handled without floating-point precision loss
  • Existing TODOs for stream handler persistence are removed or replaced with narrower follow-up notes
  • bun run indexer:type-check passes
  • bun run indexer:test passes
  • bun run indexer:lint passes

Dependencies

Suggested Files or Packages

  • indexer/streams/src/db/
  • indexer/streams/src/handlers/
  • indexer/common/src/db/repository.ts

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Stellar WaveIssues in the Stellar wave program

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions