Struct gotham_middleware_diesel::Repo
source · [−]pub struct Repo<T> where
T: Connection + 'static, { /* private fields */ }
Expand description
A database “repository”, for running database workloads. Manages a connection pool and running blocking tasks using tokio::task::spawn_blocking which does not block the tokio event loop.
#[derive(Queryable, Debug)]
pub struct User {
pub id: i32,
pub name: String,
}
type Repo = gotham_middleware_diesel::Repo<SqliteConnection>;
let repo = Repo::new(database_url);
let result = runtime
.block_on(repo.run(|conn| {
use schema::users::dsl::*;
users.load::<User>(&conn)
}))
.unwrap();
Implementations
sourceimpl<T> Repo<T> where
T: Connection + 'static,
impl<T> Repo<T> where
T: Connection + 'static,
sourcepub fn new(database_url: &str) -> Self
pub fn new(database_url: &str) -> Self
Creates a repo with default connection pool settings.
The default connection pool is r2d2::Builder::default()
type Repo = gotham_middleware_diesel::Repo<SqliteConnection>;
// Accepts a database URL, e.g. "postgres://username:password@host/database"
// for a postgres connection. Here we use an Sqlite in memory connection.
let repo = Repo::new(":memory:");
sourcepub fn from_pool_builder(
database_url: &str,
builder: Builder<ConnectionManager<T>>
) -> Self
pub fn from_pool_builder(
database_url: &str,
builder: Builder<ConnectionManager<T>>
) -> Self
Creates a repo with a pool builder, allowing you to customize any connection pool configuration.
use core::time::Duration;
use r2d2::Pool;
type Repo = gotham_middleware_diesel::Repo<SqliteConnection>;
let database_url = ":memory:";
let repo = Repo::from_pool_builder(
database_url,
Pool::builder()
.connection_timeout(Duration::from_secs(120))
.max_size(100),
);
sourcepub fn with_test_transactions(database_url: &str) -> Self
pub fn with_test_transactions(database_url: &str) -> Self
Creates a repo for use in tests, where queries are executed with an isolated test transaction and rolled back when the connection is dropped. This allows tests to run in parallel without impacting each other.
type Repo = gotham_middleware_diesel::Repo<SqliteConnection>;
let repo = Repo::with_test_transactions(":memory:");
sourcepub async fn run<F, R, E>(&self, f: F) -> Result<R, E> where
F: FnOnce(PooledConnection<ConnectionManager<T>>) -> Result<R, E> + Send + Unpin + 'static,
T: Send + 'static,
R: Send + 'static,
E: Send + 'static,
pub async fn run<F, R, E>(&self, f: F) -> Result<R, E> where
F: FnOnce(PooledConnection<ConnectionManager<T>>) -> Result<R, E> + Send + Unpin + 'static,
T: Send + 'static,
R: Send + 'static,
E: Send + 'static,
Runs the given closure in a way that is safe for blocking IO to the
database without blocking the tokio reactor.
The closure will be passed a Connection
from the pool to use.
Trait Implementations
sourceimpl<T> Clone for Repo<T> where
T: Connection + 'static,
impl<T> Clone for Repo<T> where
T: Connection + 'static,
impl<T> StateData for Repo<T> where
T: Connection + 'static,
Auto Trait Implementations
impl<T> !RefUnwindSafe for Repo<T>
impl<T> Send for Repo<T>
impl<T> Sync for Repo<T>
impl<T> Unpin for Repo<T>
impl<T> !UnwindSafe for Repo<T>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> FromState for T where
T: StateData,
impl<T> FromState for T where
T: StateData,
sourcefn try_borrow_from(state: &State) -> Option<&T>
fn try_borrow_from(state: &State) -> Option<&T>
Tries to borrow a value from the State
storage. Read more
sourcefn borrow_from(state: &State) -> &T
fn borrow_from(state: &State) -> &T
Borrows a value from the State
storage. Read more
sourcefn try_borrow_mut_from(state: &mut State) -> Option<&mut T>
fn try_borrow_mut_from(state: &mut State) -> Option<&mut T>
Tries to mutably borrow a value from the State
storage. Read more
sourcefn borrow_mut_from(state: &mut State) -> &mut T
fn borrow_mut_from(state: &mut State) -> &mut T
Mutably borrows a value from the State
storage. Read more
sourcefn try_take_from(state: &mut State) -> Option<T>
fn try_take_from(state: &mut State) -> Option<T>
Tries to move a value out of the State
storage and return ownership. Read more
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T> IntoSql for T
impl<T> IntoSql for T
sourcefn into_sql<T>(self) -> Self::Expression where
Self: AsExpression<T>,
fn into_sql<T>(self) -> Self::Expression where
Self: AsExpression<T>,
Convert self
to an expression for Diesel’s query builder. Read more
sourcefn as_sql<'a, T>(&'a self) -> <&'a Self as AsExpression<T>>::Expression where
&'a Self: AsExpression<T>,
fn as_sql<'a, T>(&'a self) -> <&'a Self as AsExpression<T>>::Expression where
&'a Self: AsExpression<T>,
Convert &self
to an expression for Diesel’s query builder. Read more
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more