[−][src]Trait toql::sql_mapper::FieldHandler
A FieldHandler maps a Toql field onto an SQL. Use it to
- define your own custom function (through FN)
- map the standart filters differently
- disallow standart filters
- handle fields that do not exist in the struct
- handle fields that match multiple columns (full text index)
Example (see full working example in tests)
ⓘThis example is not tested
use toql::query::FieldFilter; use toql::sql_mapper::FieldHandler; use toql::sql_builder::SqlBuilderError; struct MyHandler {}; impl FieldHandler for MyHandler { fn build_filter(&self, sql: &str, _filter: &FieldFilter) ->Result<Option<String>, SqlBuilderError> { --snip-- } fn build_param(&self, _filter: &FieldFilter) -> Vec<String> { --snip-- } } let my_handler = MyHandler {}; let mapper = SqlMapper::new_with_handler(my_handler);
Required methods
fn build_filter(
&self,
sql: &str,
_filter: &FieldFilter
) -> Result<Option<String>, SqlBuilderError>
&self,
sql: &str,
_filter: &FieldFilter
) -> Result<Option<String>, SqlBuilderError>
Match filter and return SQL expression.
Do not insert parameters in the SQL expression, use ?
instead.
If you miss some arguments, raise an error, typically SqlBuilderError::FilterInvalid
fn build_param(&self, _filter: &FieldFilter) -> Vec<String>
Return the parameters for your ?
Provided methods
fn build_select(&self, sql: &str) -> Option<String>
Return sql if you want to select it.
fn build_join(&self) -> Option<String>
Return addition SQL join clause for this field or None
Trait Implementations
impl Debug for dyn FieldHandler + 'static + Sync + Send
[src]
Implementors
impl FieldHandler for BasicFieldHandler
[src]
fn build_param(&self, filter: &FieldFilter) -> Vec<String>
[src]
fn build_filter(
&self,
expression: &str,
filter: &FieldFilter
) -> Result<Option<String>, SqlBuilderError>
[src]
&self,
expression: &str,
filter: &FieldFilter
) -> Result<Option<String>, SqlBuilderError>