mod column;
pub mod connection;
mod error;
pub mod params;
pub mod protocol;
mod rows;
mod session;
mod statement;
pub mod transaction;
pub mod value;
pub use column::Column;
pub use connection::Connection;
pub use error::{BoxError, Error, Result};
pub use params::{params_from_iter, IntoParams, IntoValue, Params};
pub use rows::{Row, Rows};
pub use statement::Statement;
pub use transaction::{Transaction, TransactionBehavior};
pub use value::{FromValue, Value};
pub struct Builder {
url: String,
auth_token: Option<String>,
}
impl Builder {
pub fn new_remote(url: impl Into<String>) -> Self {
Self {
url: url.into(),
auth_token: None,
}
}
pub fn with_auth_token(mut self, token: impl Into<String>) -> Self {
self.auth_token = Some(token.into());
self
}
pub async fn build(self) -> Result<Database> {
Ok(Database {
url: self.url,
auth_token: self.auth_token,
})
}
}
#[derive(Clone)]
pub struct Database {
url: String,
auth_token: Option<String>,
}
impl std::fmt::Debug for Database {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.debug_struct("Database").field("url", &self.url).finish()
}
}
impl Database {
pub fn connect(&self) -> Result<Connection> {
Ok(Connection::new(&self.url, self.auth_token.clone()))
}
}