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 · sourcepub fn borrow_mut(&mut self) -> &mut T
pub 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,
sourcepub fn try_borrow_from(state: &State) -> Option<&T>
pub fn try_borrow_from(state: &State) -> Option<&T>
Tries to borrow a value from the State
storage. Read more
sourcepub fn borrow_from(state: &State) -> &T
pub fn borrow_from(state: &State) -> &T
Borrows a value from the State
storage. Read more
sourcepub fn try_borrow_mut_from(state: &mut State) -> Option<&mut T>
pub fn try_borrow_mut_from(state: &mut State) -> Option<&mut T>
Tries to mutably borrow a value from the State
storage. Read more
sourcepub fn borrow_mut_from(state: &mut State) -> &mut T
pub fn borrow_mut_from(state: &mut State) -> &mut T
Mutably borrows a value from the State
storage. Read more
sourcepub fn try_take_from(state: &mut State) -> Option<T>
pub 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> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcepub fn to_owned(&self) -> T
pub fn to_owned(&self) -> T
Creates owned data from borrowed data, usually by cloning. Read more
sourcepub fn clone_into(&self, target: &mut T)
pub fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. 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