Module query_filter

Source
Expand description

§Query Filter

§Build a query filter

§Simple filter

A simple filter is a filter that has only one condition, Status=="ToDo".

let mut query_filter = QueryFilter::new();
query_filter.args(FilterItem::status(String::from("Status"), StatusFilterItem::equals(String::from("ToDo"))));
let filter = query_filter.build();

§Use and and or to combine multiple filters

let mut query_filter = QueryFilter::new();
query_filter.and(vec![
   FilterItem::status(String::from("Status"), StatusFilterItem::equals(String::from("Active"))),
   FilterItem::rich_text(String::from("Name"), RichTextFilterItem::contains(String::from("Zack"))),
   FilterItem::or(vec![
      FilterItem::number(String::from("Age"), NumberFilterItem::greater_than(18)),
      FilterItem::rich_text(String::from("Address"), RichTextFilterItem::contains(String::from("New York"))),
   ])
]);
let filter = query_filter.build();

§Pagenation

let notion = Notion::new();
let mut filter = QueryFilter::new();
filter.args(FilterItem::status(
    String::from("Status"),
    StatusFilterItem::is_not_empty(),
));

let mut has_more = true;

while has_more {
    let response = notion.query_database(filter.clone()).await;

    match response {
        Ok(response) => {
            has_more = response.has_more.unwrap_or(false);
            filter.start_cursor = response.next_cursor.unwrap_or(String::new());
            for result in response.results {
               // Do something with the result
            }
        }
        Err(e) => {
            println!("{:?}", e);
        }
    }
}

Structs§

CheckboxFilterItem
DateFilterItem
FilesFilterItem
FilterItem
FormulaFilterItem
IdFilterItem
MultiSelectFilterItem
NumberFilterItem
PeopleFilterItem
QueryFilter
RelationFilterItem
RichTextFilterItem
SelectFilterItem
StatusFilterItem
TimestampFilterItem