pub struct QueryBuilder {
pub sql: String,
pub params: Vec<Value>,
pub param_index: usize,
pub tables: Vec<String>,
pub current_schema: String,
}Expand description
Builder for generating parameterized PostgreSQL SQL queries.
Converts PostgREST AST types into safe, parameterized SQL queries. All user input is placed in parameters to prevent SQL injection.
§Examples
use postgrest_parser::{QueryBuilder, parse_query_string};
let params = parse_query_string("age=gte.18&status=eq.active").unwrap();
let mut builder = QueryBuilder::new();
let result = builder.build_select("users", ¶ms).unwrap();
assert!(result.query.contains("SELECT"));
assert!(result.query.contains("WHERE"));
assert_eq!(result.params.len(), 2);Fields§
§sql: StringThe SQL query being built
params: Vec<Value>Parameter values for the query
param_index: usizeCurrent parameter index (for $1, $2, etc.)
tables: Vec<String>Tables referenced in the query
current_schema: StringCurrent schema being queried (for relation resolution)
Implementations§
Source§impl QueryBuilder
impl QueryBuilder
Sourcepub fn with_schema(self, schema: impl Into<String>) -> Self
pub fn with_schema(self, schema: impl Into<String>) -> Self
Sets the current schema
Sourcepub fn build_select(
&mut self,
table: &str,
params: &ParsedParams,
) -> Result<QueryResult, SqlError>
pub fn build_select( &mut self, table: &str, params: &ParsedParams, ) -> Result<QueryResult, SqlError>
Builds a SELECT query from parsed parameters.
§Examples
use postgrest_parser::{QueryBuilder, ParsedParams, parse_filter, LogicCondition};
let filter = parse_filter("age", "gte.21").unwrap();
let params = ParsedParams::new()
.with_filters(vec![LogicCondition::Filter(filter)]);
let mut builder = QueryBuilder::new();
let result = builder.build_select("users", ¶ms).unwrap();
assert!(result.query.contains("SELECT * FROM"));
assert!(result.query.contains("WHERE"));pub fn build_where_clause( &mut self, filters: &[LogicCondition], ) -> Result<(), SqlError>
Source§impl QueryBuilder
impl QueryBuilder
Sourcepub fn build_insert(
&mut self,
resolved_table: &ResolvedTable,
params: &InsertParams,
) -> Result<QueryResult, SqlError>
pub fn build_insert( &mut self, resolved_table: &ResolvedTable, params: &InsertParams, ) -> Result<QueryResult, SqlError>
Builds an INSERT query with schema-qualified table name
Sourcepub fn build_update(
&mut self,
resolved_table: &ResolvedTable,
params: &UpdateParams,
) -> Result<QueryResult, SqlError>
pub fn build_update( &mut self, resolved_table: &ResolvedTable, params: &UpdateParams, ) -> Result<QueryResult, SqlError>
Builds an UPDATE query with schema-qualified table name and safety validation
Sourcepub fn build_delete(
&mut self,
resolved_table: &ResolvedTable,
params: &DeleteParams,
) -> Result<QueryResult, SqlError>
pub fn build_delete( &mut self, resolved_table: &ResolvedTable, params: &DeleteParams, ) -> Result<QueryResult, SqlError>
Builds a DELETE query with schema-qualified table name and safety validation
Source§impl QueryBuilder
impl QueryBuilder
Sourcepub fn build_rpc(
&mut self,
resolved_table: &ResolvedTable,
params: &RpcParams,
) -> Result<QueryResult, SqlError>
pub fn build_rpc( &mut self, resolved_table: &ResolvedTable, params: &RpcParams, ) -> Result<QueryResult, SqlError>
Builds an RPC (function call) query with schema-qualified function name
Generates: SELECT * FROM “schema”.“function_name”(arg1 := $1, arg2 := $2) PostgREST allows filtering, ordering, and pagination of function results