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 sequencetrade_id- Order by trade ID
LP Deposits:
depositor- Order by depositor addressvault- Order by vault address
LP Deposit History:
depositor- Order by depositorsequence- Order by sequencevault- Order by vault
LP Withdraw Requests:
depositor- Order by depositorunlock_epoch- Order by unlock epochvault- Order by vault
Oracle Tokens:
id- Order by token IDname- Order by token namepermission_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