Trait Renderer

Source
pub trait Renderer<'a> {
    const C_BACKTICK_OPEN: &'static str;
    const C_BACKTICK_CLOSE: &'static str;
    const C_WILDCARD: &'static str;
Show 58 methods // Required methods fn build<Q>(query: Q) -> (String, Vec<Value>) where Q: Into<Query<'a>>; fn write<D: Display>(&mut self, s: D); fn add_parameter(&mut self, value: Value); fn visit_limit_and_offset( &mut self, limit: Option<u32>, offset: Option<u32>, ); fn visit_ordering(&mut self, ordering: Ordering<'a>); fn visit_insert(&mut self, insert: Insert<'a>); fn parameter_substitution(&mut self); fn visit_aggregate_to_string(&mut self, value: Expression<'a>); fn visit_json_extract(&mut self, json_extract: JsonExtract<'a>); fn visit_json_extract_last_array_item( &mut self, extract: JsonExtractLastArrayElem<'a>, ); fn visit_json_extract_first_array_item( &mut self, extract: JsonExtractFirstArrayElem<'a>, ); fn visit_array_contains( &mut self, left: Expression<'a>, right: Expression<'a>, not: bool, ); fn visit_array_contained( &mut self, left: Expression<'a>, right: Expression<'a>, not: bool, ); fn visit_array_overlaps( &mut self, left: Expression<'a>, right: Expression<'a>, ); fn visit_json_type_equals( &mut self, left: Expression<'a>, right: JsonType<'a>, not: bool, ); fn visit_json_unquote(&mut self, json_unquote: JsonUnquote<'a>); fn visit_to_jsonb(&mut self, to_jsonb: ToJsonb<'a>); fn visit_json_build_object( &mut self, json_build_object: JsonBuildObject<'a>, ); fn visit_json_agg(&mut self, to_jsonb: JsonAgg<'a>); fn visit_encode(&mut self, encode: Encode<'a>); fn visit_delete(&mut self, delete: Delete<'a>); // Provided methods fn compatibility_modifications(&self, query: Query<'a>) -> Query<'a> { ... } fn surround_with<F>(&mut self, begin: &str, end: &str, f: F) where F: FnOnce(&mut Self) { ... } fn columns_to_bracket_list(&mut self, columns: Vec<Column<'a>>) { ... } fn visit_parameterized(&mut self, value: Value) { ... } fn visit_joins(&mut self, joins: Vec<Join<'a>>) { ... } fn visit_join_data(&mut self, data: JoinData<'a>) { ... } fn visit_common_table_expression(&mut self, cte: CommonTableExpression<'a>) { ... } fn visit_select(&mut self, select: Select<'a>) { ... } fn visit_update(&mut self, update: Update<'a>) { ... } fn visit_upsert(&mut self, update: Update<'a>) { ... } fn visit_update_set(&mut self, update: Update<'a>) { ... } fn delimited_identifiers(&mut self, parts: &[&str]) { ... } fn surround_with_backticks(&mut self, part: &str) { ... } fn visit_query(&mut self, query: Query<'a>) { ... } fn visit_columns(&mut self, columns: Vec<Expression<'a>>) { ... } fn visit_operation(&mut self, op: SqlOp<'a>) { ... } fn visit_expression(&mut self, value: Expression<'a>) { ... } fn visit_multiple_tuple_comparison( &mut self, left: Row<'a>, right: Values<'a>, negate: bool, ) { ... } fn visit_values(&mut self, values: Values<'a>) { ... } fn visit_table(&mut self, table: Table<'a>, include_alias: bool) { ... } fn visit_column(&mut self, column: Column<'a>) { ... } fn visit_row(&mut self, row: Row<'a>) { ... } fn visit_conditions(&mut self, tree: ConditionTree<'a>) { ... } fn visit_greater_than( &mut self, left: Expression<'a>, right: Expression<'a>, ) { ... } fn visit_greater_than_or_equals( &mut self, left: Expression<'a>, right: Expression<'a>, ) { ... } fn visit_less_than(&mut self, left: Expression<'a>, right: Expression<'a>) { ... } fn visit_less_than_or_equals( &mut self, left: Expression<'a>, right: Expression<'a>, ) { ... } fn visit_like(&mut self, left: Expression<'a>, right: Expression<'a>) { ... } fn visit_not_like(&mut self, left: Expression<'a>, right: Expression<'a>) { ... } fn visit_compare(&mut self, compare: Compare<'a>) { ... } fn visit_equals(&mut self, left: Expression<'a>, right: Expression<'a>) { ... } fn visit_not_equals(&mut self, left: Expression<'a>, right: Expression<'a>) { ... } fn visit_grouping(&mut self, grouping: Grouping<'a>) { ... } fn visit_average(&mut self, avg: Average<'a>) { ... } fn visit_function(&mut self, fun: Function<'a>) { ... } fn visit_concat(&mut self, concat: Concat<'a>) { ... } fn visit_partitioning(&mut self, over: Over<'a>) { ... }
}
Expand description

A function travelling through the query AST, building the final query string and gathering parameters sent to the database together with the query.

Required Associated Constants§

Source

const C_BACKTICK_OPEN: &'static str

Opening backtick character to surround identifiers, such as column and table names.

Source

const C_BACKTICK_CLOSE: &'static str

Closing backtick character to surround identifiers, such as column and table names.

Source

const C_WILDCARD: &'static str

Wildcard character to be used in LIKE queries.

Required Methods§

Source

fn build<Q>(query: Q) -> (String, Vec<Value>)
where Q: Into<Query<'a>>,

Convert the given Query to an SQL string and a vector of parameters. When certain parameters are replaced with the C_PARAM character in the query, the vector should contain the parameter value in the right position.

Source

fn write<D: Display>(&mut self, s: D)

Write to the query.

Source

fn add_parameter(&mut self, value: Value)

When called, the visitor decided to not render the parameter into the query, replacing it with the C_PARAM, calling add_parameter with the replaced value.

Source

fn visit_limit_and_offset(&mut self, limit: Option<u32>, offset: Option<u32>)

The LIMIT and OFFSET statement in the query

Source

fn visit_ordering(&mut self, ordering: Ordering<'a>)

A visit in the ORDER BY section of the query

Source

fn visit_insert(&mut self, insert: Insert<'a>)

A walk through an INSERT statement

Source

fn parameter_substitution(&mut self)

What to use to substitute a parameter in the query.

Source

fn visit_aggregate_to_string(&mut self, value: Expression<'a>)

What to use to substitute a parameter in the query.

Source

fn visit_json_extract(&mut self, json_extract: JsonExtract<'a>)

Source

fn visit_json_extract_last_array_item( &mut self, extract: JsonExtractLastArrayElem<'a>, )

Source

fn visit_json_extract_first_array_item( &mut self, extract: JsonExtractFirstArrayElem<'a>, )

Source

fn visit_array_contains( &mut self, left: Expression<'a>, right: Expression<'a>, not: bool, )

Source

fn visit_array_contained( &mut self, left: Expression<'a>, right: Expression<'a>, not: bool, )

Source

fn visit_array_overlaps(&mut self, left: Expression<'a>, right: Expression<'a>)

Source

fn visit_json_type_equals( &mut self, left: Expression<'a>, right: JsonType<'a>, not: bool, )

Source

fn visit_json_unquote(&mut self, json_unquote: JsonUnquote<'a>)

Source

fn visit_to_jsonb(&mut self, to_jsonb: ToJsonb<'a>)

Source

fn visit_json_build_object(&mut self, json_build_object: JsonBuildObject<'a>)

Source

fn visit_json_agg(&mut self, to_jsonb: JsonAgg<'a>)

Source

fn visit_encode(&mut self, encode: Encode<'a>)

Source

fn visit_delete(&mut self, delete: Delete<'a>)

A walk through an DELETE statement

Provided Methods§

Source

fn compatibility_modifications(&self, query: Query<'a>) -> Query<'a>

A point to modify an incoming query to make it compatible with the underlying database.

Source

fn surround_with<F>(&mut self, begin: &str, end: &str, f: F)
where F: FnOnce(&mut Self),

Source

fn columns_to_bracket_list(&mut self, columns: Vec<Column<'a>>)

Source

fn visit_parameterized(&mut self, value: Value)

A visit to a value we parameterize

Source

fn visit_joins(&mut self, joins: Vec<Join<'a>>)

The join statements in the query

Source

fn visit_join_data(&mut self, data: JoinData<'a>)

Source

fn visit_common_table_expression(&mut self, cte: CommonTableExpression<'a>)

Source

fn visit_select(&mut self, select: Select<'a>)

A walk through a SELECT statement

Source

fn visit_update(&mut self, update: Update<'a>)

A walk through an UPDATE statement

Source

fn visit_upsert(&mut self, update: Update<'a>)

Source

fn visit_update_set(&mut self, update: Update<'a>)

Source

fn delimited_identifiers(&mut self, parts: &[&str])

A helper for delimiting an identifier, surrounding every part with C_BACKTICK and delimiting the values with a .

Source

fn surround_with_backticks(&mut self, part: &str)

A helper for delimiting a part of an identifier, surrounding it with C_BACKTICK

Source

fn visit_query(&mut self, query: Query<'a>)

A walk through a complete Query statement

Source

fn visit_columns(&mut self, columns: Vec<Expression<'a>>)

The selected columns

Source

fn visit_operation(&mut self, op: SqlOp<'a>)

Source

fn visit_expression(&mut self, value: Expression<'a>)

A visit to a value used in an expression

Source

fn visit_multiple_tuple_comparison( &mut self, left: Row<'a>, right: Values<'a>, negate: bool, )

Source

fn visit_values(&mut self, values: Values<'a>)

Source

fn visit_table(&mut self, table: Table<'a>, include_alias: bool)

A database table identifier

Source

fn visit_column(&mut self, column: Column<'a>)

A database column identifier

Source

fn visit_row(&mut self, row: Row<'a>)

A row of data used as an expression

Source

fn visit_conditions(&mut self, tree: ConditionTree<'a>)

A walk through the query conditions

Source

fn visit_greater_than(&mut self, left: Expression<'a>, right: Expression<'a>)

Source

fn visit_greater_than_or_equals( &mut self, left: Expression<'a>, right: Expression<'a>, )

Source

fn visit_less_than(&mut self, left: Expression<'a>, right: Expression<'a>)

Source

fn visit_less_than_or_equals( &mut self, left: Expression<'a>, right: Expression<'a>, )

Source

fn visit_like(&mut self, left: Expression<'a>, right: Expression<'a>)

Source

fn visit_not_like(&mut self, left: Expression<'a>, right: Expression<'a>)

Source

fn visit_compare(&mut self, compare: Compare<'a>)

A comparison expression

Source

fn visit_equals(&mut self, left: Expression<'a>, right: Expression<'a>)

Source

fn visit_not_equals(&mut self, left: Expression<'a>, right: Expression<'a>)

Source

fn visit_grouping(&mut self, grouping: Grouping<'a>)

A visit in the GROUP BY section of the query

Source

fn visit_average(&mut self, avg: Average<'a>)

Source

fn visit_function(&mut self, fun: Function<'a>)

Source

fn visit_concat(&mut self, concat: Concat<'a>)

Source

fn visit_partitioning(&mut self, over: Over<'a>)

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<'a> Renderer<'a> for Postgres

Source§

const C_BACKTICK_OPEN: &'static str = "\""

Source§

const C_BACKTICK_CLOSE: &'static str = "\""

Source§

const C_WILDCARD: &'static str = "%"