MCPcopy Create free account
hub / github.com/NodeDB-Lab/nodedb / handle_zrank

Function handle_zrank

nodedb/src/control/server/resp/handler_sorted.rs:114–139  ·  view source on GitHub ↗

ZRANK key member — returns 0-based rank (Redis convention).

(
    cmd: &RespCommand,
    session: &RespSession,
    state: &SharedState,
)

Source from the content-addressed store, hash-verified

112
113/// ZRANK key member — returns 0-based rank (Redis convention).
114pub(super) async fn handle_zrank(
115 cmd: &RespCommand,
116 session: &RespSession,
117 state: &SharedState,
118) -> RespValue {
119 let Some(member) = cmd.arg(0) else {
120 return RespValue::err("ERR wrong number of arguments for 'zrank' command");
121 };
122
123 let plan = PhysicalPlan::Kv(KvOp::SortedIndexRank {
124 index_name: session.collection.clone(),
125 primary_key: member.to_vec(),
126 });
127
128 match dispatch_kv(state, session, plan).await {
129 Ok(resp) if resp.status == Status::Ok => {
130 let rank = parse_json_field_i64(&resp.payload, "rank");
131 match rank {
132 Some(r) if r > 0 => RespValue::integer(r - 1), // Convert to 0-based.
133 _ => RespValue::nil(),
134 }
135 }
136 Ok(_) => RespValue::nil(),
137 Err(e) => RespValue::err(format!("ERR {e}")),
138 }
139}
140
141/// ZRANGE key start stop — returns members in rank range [start, stop] (0-based).
142pub(super) async fn handle_zrange(

Callers 1

executeFunction · 0.85

Calls 6

dispatch_kvFunction · 0.85
parse_json_field_i64Function · 0.85
argMethod · 0.80
errFunction · 0.50
cloneMethod · 0.45
to_vecMethod · 0.45

Tested by

no test coverage detected