feat: add databases and filter options
This commit is contained in:
parent
fe89272ba5
commit
46d1bc9b3f
23
src/lib.rs
23
src/lib.rs
|
@ -1,4 +1,5 @@
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
use serde_json::json;
|
||||||
|
|
||||||
// TODO: Add the ability to hack into the code or add queuing
|
// TODO: Add the ability to hack into the code or add queuing
|
||||||
|
|
||||||
|
@ -78,7 +79,8 @@ fn get_http_client(notion_api_key: &str) -> reqwest::Client {
|
||||||
pub struct Client {
|
pub struct Client {
|
||||||
http_client: Rc<reqwest::Client>,
|
http_client: Rc<reqwest::Client>,
|
||||||
pub pages: Pages,
|
pub pages: Pages,
|
||||||
pub blocks: Blocks
|
pub blocks: Blocks,
|
||||||
|
pub databases: Databases
|
||||||
}
|
}
|
||||||
|
|
||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
|
@ -89,12 +91,9 @@ impl<'a> Client {
|
||||||
|
|
||||||
Client {
|
Client {
|
||||||
http_client: http_client.clone(),
|
http_client: http_client.clone(),
|
||||||
pages: Pages {
|
pages: Pages { http_client: http_client.clone() },
|
||||||
http_client: http_client.clone()
|
blocks: Blocks { http_client: http_client.clone() },
|
||||||
},
|
databases: Databases { http_client: http_client.clone() }
|
||||||
blocks: Blocks {
|
|
||||||
http_client: http_client.clone()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -178,8 +177,14 @@ impl Databases {
|
||||||
pub async fn query(self, options: DatabaseQueryOptions) -> Result<QueryResponse<Page>> {
|
pub async fn query(self, options: DatabaseQueryOptions) -> Result<QueryResponse<Page>> {
|
||||||
let url = format!("https://api.notion.com/v1/databases/{database_id}/query", database_id = options.database_id);
|
let url = format!("https://api.notion.com/v1/databases/{database_id}/query", database_id = options.database_id);
|
||||||
|
|
||||||
let request = self.http_client
|
let mut request = self.http_client
|
||||||
.post(url)
|
.post(url);
|
||||||
|
|
||||||
|
if let Some(filter) = options.filter {
|
||||||
|
request = request.json(&json!({ "filter": filter }));
|
||||||
|
}
|
||||||
|
|
||||||
|
let request = request
|
||||||
.send()
|
.send()
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue