pub struct DbPool { /* private fields */ }Expand description
Database connection pool wrapper
Implementations§
Source§impl DbPool
impl DbPool
Sourcepub async fn connect(url: &str) -> Result<Self>
pub async fn connect(url: &str) -> Result<Self>
Examples found in repository?
examples/db_demo.rs (line 12)
5async fn main() -> Result<(), Box<dyn Error>> {
6 println!("🚀 Starting Database Demo");
7
8 // Use SQLite for this example as it's self-contained
9 let url = "sqlite::memory:?cache=shared";
10 println!("Connecting to {}", url);
11
12 let db = DbPool::connect(url).await?;
13 println!("Connected to {:?}", db.db_type());
14
15 // Create a table
16 let setup_sql = "
17 CREATE TABLE users (
18 id INTEGER PRIMARY KEY,
19 name TEXT NOT NULL,
20 email TEXT NOT NULL
21 );
22 ";
23 db.execute(setup_sql).await?;
24 println!("Created table 'users'");
25
26 // Insert some data
27 let insert_sql = "INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com')";
28 let rows = db.execute(insert_sql).await?;
29 println!("Inserted {} row(s)", rows);
30
31 let insert_sql2 = "INSERT INTO users (name, email) VALUES ('Bob', 'bob@example.com')";
32 let rows2 = db.execute(insert_sql2).await?;
33 println!("Inserted {} row(s)", rows2);
34
35 // Query data using the new query method
36 let select_sql = "SELECT * FROM users";
37 let results = db.query(select_sql).await?;
38 println!("Found {} user(s)", results.len());
39
40 for row in results {
41 let name: String = row.try_get("name")?;
42 let email: String = row.try_get("email")?;
43 println!("User: {} ({})", name, email);
44 }
45
46 // Query one
47 let one_sql = "SELECT * FROM users WHERE name = 'Alice'";
48 if let Some(row) = db.query_one(one_sql).await? {
49 let name: String = row.try_get("name")?;
50 println!("Found specific user: {}", name);
51 } else {
52 println!("User not found");
53 }
54
55 db.ping().await?;
56 println!("Ping successful");
57
58 Ok(())
59}pub async fn connect_with_options( url: &str, options: PoolOptions, ) -> Result<Self>
Trait Implementations§
Source§impl Database for DbPool
impl Database for DbPool
Source§fn db_type(&self) -> DatabaseType
fn db_type(&self) -> DatabaseType
Get the database type
Source§fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
query: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
query: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Execute a query
Source§fn query<'life0, 'life1, 'async_trait>(
&'life0 self,
query: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<AnyRow>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn query<'life0, 'life1, 'async_trait>(
&'life0 self,
query: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<AnyRow>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Query multiple rows
Source§fn query_one<'life0, 'life1, 'async_trait>(
&'life0 self,
query: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<AnyRow>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn query_one<'life0, 'life1, 'async_trait>(
&'life0 self,
query: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<AnyRow>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Query one row
Source§fn ping<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn ping<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Check health
Source§fn begin_transaction<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<DbTransaction>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn begin_transaction<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<DbTransaction>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Begin a transaction
Source§fn execute_query<'q, 'life0, 'async_trait>(
&'life0 self,
query: Query<'q, Any, AnyArguments<'q>>,
) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>>where
Self: 'async_trait,
'q: 'async_trait,
'life0: 'async_trait,
fn execute_query<'q, 'life0, 'async_trait>(
&'life0 self,
query: Query<'q, Any, AnyArguments<'q>>,
) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>>where
Self: 'async_trait,
'q: 'async_trait,
'life0: 'async_trait,
Execute a sqlx Query
Auto Trait Implementations§
impl Freeze for DbPool
impl !RefUnwindSafe for DbPool
impl Send for DbPool
impl Sync for DbPool
impl Unpin for DbPool
impl !UnwindSafe for DbPool
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more