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);
}
}
}