pub struct RpcParams {
pub function_name: String,
pub args: HashMap<String, Value>,
pub filters: Vec<LogicCondition>,
pub order: Vec<OrderTerm>,
pub limit: Option<u64>,
pub offset: Option<u64>,
pub returning: Option<Vec<SelectItem>>,
}Expand description
Parameters for calling a PostgreSQL function (RPC - Remote Procedure Call).
PostgREST allows calling database functions via POST /rpc/function_name with named arguments.
Function results can be filtered, ordered, and paginated like regular queries.
§SQL Generation
Generates queries like:
SELECT * FROM "schema"."function_name"(arg1 := $1, arg2 := $2)
WHERE filter_column = $3
ORDER BY order_column
LIMIT $4 OFFSET $5§Examples
use postgrest_parser::{RpcParams, parse_filter, parse_order, LogicCondition};
use std::collections::HashMap;
use serde_json::json;
// Simple function call
let mut args = HashMap::new();
args.insert("user_id".to_string(), json!(123));
let params = RpcParams::new("get_user_profile", args);
assert_eq!(params.function_name, "get_user_profile");
// Function call with filtering and pagination
let mut args = HashMap::new();
args.insert("department".to_string(), json!("engineering"));
let filter = parse_filter("active", "eq.true").unwrap();
let order = parse_order("salary.desc").unwrap();
let params = RpcParams::new("list_employees", args)
.with_filters(vec![LogicCondition::Filter(filter)])
.with_order(order)
.with_limit(20)
.with_offset(40);
assert_eq!(params.limit, Some(20));
assert_eq!(params.offset, Some(40));Fields§
§function_name: StringThe name of the function to call
args: HashMap<String, Value>Named arguments to pass to the function
filters: Vec<LogicCondition>Optional filters to apply to function results
order: Vec<OrderTerm>Optional ordering for function results
limit: Option<u64>Optional result limit
offset: Option<u64>Optional result offset (for pagination)
returning: Option<Vec<SelectItem>>Optional columns to select from function results
Implementations§
Source§impl RpcParams
impl RpcParams
Sourcepub fn new(
function_name: impl Into<String>,
args: HashMap<String, Value>,
) -> Self
pub fn new( function_name: impl Into<String>, args: HashMap<String, Value>, ) -> Self
Creates new RPC parameters with function name and arguments.
Sourcepub fn with_filters(self, filters: Vec<LogicCondition>) -> Self
pub fn with_filters(self, filters: Vec<LogicCondition>) -> Self
Adds filters to apply to function results.
Sourcepub fn with_order(self, order: Vec<OrderTerm>) -> Self
pub fn with_order(self, order: Vec<OrderTerm>) -> Self
Adds ordering to function results.
Sourcepub fn with_limit(self, limit: u64) -> Self
pub fn with_limit(self, limit: u64) -> Self
Sets the maximum number of results to return.
Sourcepub fn with_offset(self, offset: u64) -> Self
pub fn with_offset(self, offset: u64) -> Self
Sets the offset for pagination.
Sourcepub fn with_returning(self, returning: Vec<SelectItem>) -> Self
pub fn with_returning(self, returning: Vec<SelectItem>) -> Self
Specifies which columns to select from function results.