notion_sdk/database/
api.rs

1use crate::database::id::DatabaseId;
2use crate::database::{CreateDatabase, UpdateDatabase};
3use crate::search::DatabaseQuery;
4use crate::{Error, NotionApi, Object};
5
6const ROUTER: &str = "databases";
7
8impl NotionApi {
9    /// Retrieve a user
10    pub async fn databases_retrieve(&self, id: DatabaseId) -> Result<Object, Error> {
11        let u = format!("{}/{}/{}", self.base_path, ROUTER, id);
12        self.request(self.client.get(u)).await
13    }
14    pub async fn databases_query(
15        &self,
16        id: DatabaseId,
17        query: Option<DatabaseQuery>,
18    ) -> Result<Object, Error> {
19        let u = format!("{}/{}/{}/query", self.base_path, ROUTER, id);
20        let mut rb = self.client.post(u);
21        if let Some(q) = query {
22            rb = rb.json(&q);
23        }
24        self.request(rb).await
25    }
26    pub async fn databases_create(&self, db: CreateDatabase) -> Result<Object, Error> {
27        let u = format!("{}/{}/", self.base_path, ROUTER);
28        self.request(self.client.post(u).json(&db)).await
29    }
30    pub async fn databases_update(
31        &self,
32        id: DatabaseId,
33        db: UpdateDatabase,
34    ) -> Result<Object, Error> {
35        let u = format!("{}/{}/{}", self.base_path, ROUTER, id);
36        self.request(self.client.patch(u).json(&db)).await
37    }
38}