filter.rs

Overview

This file defines the TransactionFilter struct, which serves as a filter input object for querying transaction data. It is designed to be used in GraphQL queries to specify filtering criteria based on various transaction fields such as transaction ID, account address, block ID, and status codes. The filter supports nested logical "or" conditions through recursive composition.

Struct: TransactionFilter

Purpose

TransactionFilter encapsulates optional filtering criteria for transaction-related queries, allowing fine-grained selection of transactions that match specific attributes or sets of attributes.

Derivations and Traits

Field Descriptions

Field Name

Type

Description

id

OptStringFilter

Optional filter on the transaction's unique identifier.

account_addr

OptStringFilter

Optional filter on the account address associated with the transaction.

block_id

OptStringFilter

Optional filter on the block identifier containing the transaction.

end_status

OptIntFilter

Optional filter on the transaction's ending status code.

orig_status

OptIntFilter

Optional filter on the transaction's original status code.

or

Option<Box<TransactionFilter>>

Optional nested TransactionFilter to represent logical OR conditions for filtering.

Usage Example

use crate::filter::TransactionFilter;
use crate::schema::graphql_shared::filter::{OptStringFilter, OptIntFilter};

// Filter for transactions with a specific account address or a certain end status
let filter = TransactionFilter {
    id: OptStringFilter::default(),
    account_addr: OptStringFilter::from_exact("0xabc123"),
    block_id: OptStringFilter::default(),
    end_status: OptIntFilter::from_eq(1),
    orig_status: OptIntFilter::default(),
    or: Some(Box::new(TransactionFilter {
        id: OptStringFilter::default(),
        account_addr: OptStringFilter::default(),
        block_id: OptStringFilter::default(),
        end_status: OptIntFilter::from_eq(2),
        orig_status: OptIntFilter::default(),
        or: None,
    })),
};

This example constructs a filter targeting transactions either with a specific account address and an end status of 1, or an end status of 2.

Implementation Details

Interactions with Other Components

Visual Diagram

classDiagram
class TransactionFilter {
-id: OptStringFilter
-account_addr: OptStringFilter
-block_id: OptStringFilter
-end_status: OptIntFilter
-orig_status: OptIntFilter
-or: Option<Box<TransactionFilter>>
}
TransactionFilter ..> OptStringFilter : uses
TransactionFilter ..> OptIntFilter : uses
TransactionFilter --|> WhereOp