Filters & Pagination

Master advanced querying patterns including filtering, pagination, and ordering.

Table of Contents


Filter Types

Sai Keeper supports various filter types for different data types.

String Filters

StringFilter supports equality and pattern matching.

input StringFilter {
  eq: String      # Exact match
  like: String    # Pattern match
}

Example - Exact Match:

Example - Pattern Match:

Usage in JavaScript:


Integer Filters

IntFilter supports comparison operations.

Example - Fee Amount Range:

Usage in JavaScript:


Float Filters

FloatFilter for floating-point comparisons.

Example - Filter by Leverage:


Time Filters

TimeFilter for date/time range queries.

Example - Filter by Date Range:

Usage in JavaScript:

Helper Function:


Enum Filters

Filter by enum values.

Example - Fee Type Filter:

Example - Trade Type Filter:


Pagination

Basic Pagination

Use limit and offset for pagination.

JavaScript Implementation:


Fetch All Pattern

Fetch all results across multiple pages.


Cursor-Based Pagination Alternative

While Sai Keeper uses offset pagination, you can implement cursor-based logic:


Infinite Scroll Pattern

Implement infinite scroll for UI:


Ordering

Order Direction

Most queries support order_by and order_desc parameters.

Order Options by Domain:

Perp Trades:

  • sequence - Order by sequence number

Trade History:

  • sequence - Order by sequence

  • trade_id - Order by trade ID

LP Deposits:

  • depositor - Order by depositor address

  • vault - Order by vault address

LP Deposit History:

  • depositor - Order by depositor

  • sequence - Order by sequence

  • vault - Order by vault

LP Withdraw Requests:

  • depositor - Order by depositor

  • unlock_epoch - Order by unlock epoch

  • vault - Order by vault

Oracle Tokens:

  • id - Order by token ID

  • name - Order by token name

  • permission_group - Order by permission group

Fee Transactions:

  • No explicit ordering parameter, results ordered by ID


Sorting Examples

Newest First:

Oldest First:

By Token Name:


Advanced Patterns

Combined Filters

Combine multiple filters for precise queries.


Client-Side Post-Filtering

When server-side filters aren't available, filter client-side:


Search Implementation

Build a search feature:


Best Practices

1. Use Appropriate Page Sizes

Recommended page sizes:

  • Trades: 20-100

  • Fee transactions: 50-100

  • Trade history: 50-200

  • Tokens: 100-500


2. Cache Paginated Results


3. Handle Empty Results


4. Debounce Filter Changes


5. Show Loading States


6. Validate Filter Inputs

Last updated