Skip to content

Comments

Implement transaction search and filtering API#112

Open
miss-yusrah wants to merge 2 commits intoSynapse-bridgez:mainfrom
miss-yusrah:feat/transaction-search
Open

Implement transaction search and filtering API#112
miss-yusrah wants to merge 2 commits intoSynapse-bridgez:mainfrom
miss-yusrah:feat/transaction-search

Conversation

@miss-yusrah
Copy link

@miss-yusrah miss-yusrah commented Feb 22, 2026

Closes #98

Transaction Search & Filtering API

Overview
Implements a powerful search and filtering endpoint that allows querying transactions by multiple criteria simultaneously, supporting operations and compliance workflows.

Changes

New Endpoint

  • GET /transactions/search - Search transactions with multiple filter support

Query Parameters
All parameters are optional and combine with AND logic:

  • status - Filter by transaction status (e.g., completed, pending, failed)
  • asset_code - Filter by asset code (e.g., USDC, USD, XLM)
  • min_amount - Minimum transaction amount (inclusive)
  • max_amount - Maximum transaction amount (inclusive)
  • from - Start date for date range filter (ISO 8601 format)
  • to - End date for date range filter (ISO 8601 format)
  • stellar_account - Filter by Stellar account address
  • limit - Results per page (default: 50, max: 100)
  • cursor - Pagination cursor from previous response

Response Format

{
  "total": 142,
  "results": [...],
  "next_cursor": "eyJjcmVhdGVkX2F0Ij..."
}

Implementation Details

Files Added

  • src/handlers/search.rs - Search endpoint handler with parameter validation
  • migrations/20260222000000_transaction_search_indexes.sql - Database indexes for search optimization

Files Modified

  • src/db/queries.rs - Added search_transactions() with dynamic query builder
  • src/handlers/mod.rs - Registered search module
  • src/main.rs - Added search route with pool_manager state
  • src/utils/mod.rs - Exported cursor module
  • src/db/mod.rs - Exported audit module
  • src/lib.rs - Exported utils module

Database Indexes
Added 6 indexes for optimized search performance:

  • idx_transactions_asset_code - Asset code filtering
  • idx_transactions_created_status - Date range with status
  • idx_transactions_amount - Amount range queries
  • idx_transactions_created_id - Cursor-based pagination
  • idx_transactions_search - Combined status, asset_code, and date queries

Security

  • All query parameters use parameterized queries (no SQL injection risk)
  • Input validation for dates, amounts, and cursors
  • No user input directly interpolated into SQL

Performance

  • Uses read replica for search queries (reduces primary DB load)
  • Cursor-based pagination for efficient large result set traversal
  • Optimized indexes for common search patterns

- Add GET /transactions/search endpoint with multiple filter support
- Support filtering by status, asset_code, amount range, date range, and stellar_account
- Implement cursor-based pagination for efficient result traversal
- Add database indexes for optimized search performance
- Use read replica for search queries to reduce primary DB load
- Return total count and paginated results with next_cursor
Resolved conflicts in:
- Cargo.toml: Merged dependencies
- src/lib.rs: Added all module exports (utils, error, health, metrics, validation)
- src/handlers/mod.rs: Added search module alongside health check updates
- src/db/queries.rs: Kept search_transactions function and Row import
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.

Transaction Search & Filtering API (Feature)

1 participant