1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
use serde::{de::DeserializeOwned, Serialize};
use crate::Client;
impl Client {
/// [Beta endpoint] Executes a Postgres query using the Supabase Management API.
///
/// ```no_run
/// # use serde::Deserialize;
/// # async fn run_query() -> Result<(), Box<dyn std::error::Error>> {
/// # let client = supabase_management_rs::Client::new("dummy".to_string());
///
/// # let project_id = "dummy";
///
/// #[derive(Deserialize, PartialEq, Debug)]
/// struct Row {
/// id: i32,
/// hash_value: String,
/// }
///
/// let rows: Vec<Row> = client
/// .query(
/// project_id,
/// "SELECT generate_series(1, 3) AS id, \
/// md5(generate_series(1, 3)::text) AS hash_value",
/// )
/// .await?;
///
/// assert_eq!(
/// rows,
/// [
/// Row {
/// id: 1,
/// hash_value: "c4ca4238a0b923820dcc509a6f75849b".into(),
/// },
/// Row {
/// id: 2,
/// hash_value: "c81e728d9d4c2f636f067f89cc14862c".into(),
/// },
/// Row {
/// id: 3,
/// hash_value: "eccbc87e4b5ce2fe28308fd9f2a7baf3".into(),
/// },
/// ]
/// );
/// # Ok(())
/// # }
pub async fn query<T: DeserializeOwned>(
&self,
project_id: &str,
query: &str,
) -> Result<T, crate::Error> {
#[derive(Serialize)]
struct Body<'a> {
query: &'a str,
}
// CLIENT
// .post(&url)
// .bearer_auth(&self.api_key)
// .json(&Body { query })
// .send()
// .await?
// .json()
// .await
self.post(
format!("projects/{project_id}/database/query"),
Some(&Body { query }),
)
.await
}
}