Skip to content

feat(api): implement ListEvents gRPC handler #10

@Depo-dev

Description

@Depo-dev

Summary

EventsServiceImpl::list_events currently returns Status::unimplemented. Needs a real Postgres query with filters and cursor pagination.

Acceptance Criteria

  • Accept ListEventsRequest filters: contract_id, topic_0, topic_1, ledger_from, ledger_to
  • Build a dynamic WHERE clause from whichever filters are present (all optional)
  • Cursor-based pagination: accept cursor (last seen UUID), return up to 200 rows, include next_cursor in response
  • Map soroban_events rows → proto Event messages
  • Return Status::internal with a safe message on DB errors (no raw SQL in error responses)
  • Integration test: seed 5 events, query by contract_id, assert correct count and field values

Files

crates/api/src/services/events.rs

Notes

The API crate needs a sqlx::PgPool injected into EventsServiceImpl. Add it to the struct and wire it in main.rs.

Metadata

Metadata

Assignees

No one assigned

    Labels

    grpcgRPC API workphase-1MVP phase 1 scoperustRust crate work

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions