Skip to content

Commit

Permalink
Merge pull request #102 from EthanYuan/update-rpc-indexer
Browse files Browse the repository at this point in the history
[BREAKING CHANGE] Extend Indexer PRC `SearchKey` for CKB 0.114
  • Loading branch information
quake authored Feb 1, 2024
2 parents 4d373fc + 8c8d6d0 commit 3b8f395
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 19 deletions.
16 changes: 11 additions & 5 deletions src/rpc/ckb_indexer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,24 @@ use crate::traits::{CellQueryOptions, LiveCell, PrimaryScriptType, ValueRangeOpt
pub struct SearchKey {
pub script: Script,
pub script_type: ScriptType,
pub script_search_mode: Option<ScriptSearchMode>,
pub script_search_mode: Option<SearchMode>,
pub filter: Option<SearchKeyFilter>,
pub with_data: Option<bool>,
pub group_by_transaction: Option<bool>,
}

#[derive(Serialize, Deserialize, Clone, Debug, Eq, PartialEq, Hash)]
#[serde(rename_all = "snake_case")]
pub enum ScriptSearchMode {
// search script with prefix
pub enum SearchMode {
// search with prefix
Prefix,
// search script with exact match
// search with exact match
Exact,
// search with partial match
Partial,
}

impl Default for ScriptSearchMode {
impl Default for SearchMode {
fn default() -> Self {
Self::Prefix
}
Expand All @@ -37,6 +39,8 @@ impl Default for ScriptSearchMode {
pub struct SearchKeyFilter {
pub script: Option<Script>,
pub script_len_range: Option<[Uint64; 2]>,
pub output_data: Option<JsonBytes>,
pub output_data_filter_mode: Option<SearchMode>,
pub output_data_len_range: Option<[Uint64; 2]>,
pub output_capacity_range: Option<[Uint64; 2]>,
pub block_range: Option<[BlockNumber; 2]>,
Expand All @@ -56,6 +60,8 @@ impl From<CellQueryOptions> for SearchKey {
Some(SearchKeyFilter {
script: opts.secondary_script.map(|v| v.into()),
script_len_range: opts.secondary_script_len_range.map(convert_range),
output_data: None,
output_data_filter_mode: None,
output_data_len_range: opts.data_len_range.map(convert_range),
output_capacity_range: opts.capacity_range.map(convert_range),
block_range: opts.block_range.map(convert_range),
Expand Down
20 changes: 10 additions & 10 deletions src/tests/ckb_indexer_rpc.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use crate::{
rpc::{
ckb_indexer::{Order, ScriptSearchMode, SearchKey},
ckb_indexer::{Order, SearchKey, SearchMode},
CkbRpcClient,
},
traits::{CellQueryOptions, ValueRangeOption},
Expand Down Expand Up @@ -66,7 +66,7 @@ fn test_cells_search_mode_prefix_partitial() {

let mut query = CellQueryOptions::new(script, crate::traits::PrimaryScriptType::Type);
query.block_range = block_range;
query.script_search_mode = Some(ScriptSearchMode::Prefix);
query.script_search_mode = Some(SearchMode::Prefix);
query.min_total_capacity = u64::MAX;

let search_key = SearchKey::from(query);
Expand All @@ -87,7 +87,7 @@ fn test_cells_search_mode_exact_partitial() {
.build();
// exact with partitial args
let mut query = CellQueryOptions::new(script, crate::traits::PrimaryScriptType::Type);
query.script_search_mode = Some(ScriptSearchMode::Exact);
query.script_search_mode = Some(SearchMode::Exact);
query.block_range = block_range;
query.min_total_capacity = u64::MAX;

Expand All @@ -109,7 +109,7 @@ fn test_cells_search_mode_exact() {
.build();

let mut query = CellQueryOptions::new(script, crate::traits::PrimaryScriptType::Type);
query.script_search_mode = Some(ScriptSearchMode::Exact);
query.script_search_mode = Some(SearchMode::Exact);
query.block_range = block_range;
query.min_total_capacity = u64::MAX;

Expand Down Expand Up @@ -156,7 +156,7 @@ fn test_get_transactions_search_mode_prefix_partial() {

let mut query = CellQueryOptions::new(script, crate::traits::PrimaryScriptType::Type);
query.block_range = block_range;
query.script_search_mode = Some(ScriptSearchMode::Prefix);
query.script_search_mode = Some(SearchMode::Prefix);
query.min_total_capacity = u64::MAX;

let search_key = SearchKey::from(query);
Expand All @@ -177,7 +177,7 @@ fn test_get_transactions_search_mode_exact_partitial() {
.build();

let mut query = CellQueryOptions::new(script, crate::traits::PrimaryScriptType::Type);
query.script_search_mode = Some(ScriptSearchMode::Exact);
query.script_search_mode = Some(SearchMode::Exact);
query.block_range = block_range;
query.min_total_capacity = u64::MAX;

Expand All @@ -200,7 +200,7 @@ fn test_get_transactions_search_mode_exact_full() {
.build();

let mut query = CellQueryOptions::new(script, crate::traits::PrimaryScriptType::Type);
query.script_search_mode = Some(ScriptSearchMode::Exact);
query.script_search_mode = Some(SearchMode::Exact);
query.block_range = block_range;
query.min_total_capacity = u64::MAX;

Expand Down Expand Up @@ -244,7 +244,7 @@ fn test_get_cells_capacity_search_mode_prefix_partial() {

let mut query = CellQueryOptions::new(script, crate::traits::PrimaryScriptType::Type);
query.block_range = block_range;
query.script_search_mode = Some(ScriptSearchMode::Prefix);
query.script_search_mode = Some(SearchMode::Prefix);
query.min_total_capacity = u64::MAX;

let search_key = SearchKey::from(query);
Expand All @@ -264,7 +264,7 @@ fn test_get_cells_capacity_search_mode_exact_partital() {
.build();
// exact with partitial args
let mut query = CellQueryOptions::new(script, crate::traits::PrimaryScriptType::Type);
query.script_search_mode = Some(ScriptSearchMode::Exact);
query.script_search_mode = Some(SearchMode::Exact);
query.block_range = block_range;
query.min_total_capacity = u64::MAX;

Expand All @@ -285,7 +285,7 @@ fn test_get_cells_capacity_search_mode_exact() {
.build();

let mut query = CellQueryOptions::new(script, crate::traits::PrimaryScriptType::Type);
query.script_search_mode = Some(ScriptSearchMode::Exact);
query.script_search_mode = Some(SearchMode::Exact);
query.block_range = block_range;
query.min_total_capacity = u64::MAX;

Expand Down
4 changes: 2 additions & 2 deletions src/traits/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ use ckb_types::{
prelude::*,
};

use crate::{rpc::ckb_indexer::ScriptSearchMode, util::is_mature};
use crate::{rpc::ckb_indexer::SearchMode, util::is_mature};

/// Signer errors
#[derive(Error, Debug)]
Expand Down Expand Up @@ -256,7 +256,7 @@ pub struct CellQueryOptions {
/// satisfied will stop collecting. The default value is 1 shannon means
/// collect only one cell at most.
pub min_total_capacity: u64,
pub script_search_mode: Option<ScriptSearchMode>,
pub script_search_mode: Option<SearchMode>,
}
impl CellQueryOptions {
pub fn new(primary_script: Script, primary_type: PrimaryScriptType) -> CellQueryOptions {
Expand Down
4 changes: 2 additions & 2 deletions src/transaction/input/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use ckb_types::packed::Script;
pub use transaction_input::TransactionInput;

use crate::{
rpc::ckb_indexer::ScriptSearchMode,
rpc::ckb_indexer::SearchMode,
traits::{
CellCollector, CellCollectorError, CellQueryOptions, DefaultCellCollector, ValueRangeOption,
},
Expand Down Expand Up @@ -76,7 +76,7 @@ impl InputIterator {
loop {
if let Some(lock_script) = self.lock_scripts.last() {
let mut query = CellQueryOptions::new_lock(lock_script.clone());
query.script_search_mode = Some(ScriptSearchMode::Exact);
query.script_search_mode = Some(SearchMode::Exact);
if let Some(type_script) = &self.type_script {
query.secondary_script = Some(type_script.clone());
} else {
Expand Down

0 comments on commit 3b8f395

Please sign in to comment.