mod builder;
mod filters;
pub mod row;
mod value;
pub use builder::{
CountMode, MaybeSingleBuilder, Order, PostgrestBuilder, SingleBuilder, TableBuilder,
TextSearchType,
};
pub use row::Row;
pub use value::PostgrestValue;
use crate::SupabaseClient;
impl SupabaseClient {
pub fn from(&self, table: impl Into<String>) -> TableBuilder {
TableBuilder::new(self.clone(), table.into())
}
pub fn from_row<R: Row>(&self) -> TableBuilder {
TableBuilder::new(self.clone(), R::TABLE.into())
}
}
#[cfg(test)]
#[allow(clippy::unwrap_used)]
mod tests {
use super::*;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
struct Widget {
id: String,
}
impl Row for Widget {
const TABLE: &'static str = "widgets";
}
#[test]
fn from_row_uses_row_table_constant() {
let client = SupabaseClient::new("https://x.supabase.co", "anon", None);
let path = client.from_row::<Widget>().select("*").build_path();
assert_eq!(path, "/rest/v1/widgets?select=%2A");
}
}