pub trait Model<DB>: Sized + TableMetawhere
DB: Database,{
// Required methods
fn insert<'a, A>(self, conn: A) -> Insertion<'a, A, Self, DB>
where A: 'a + Send + Acquire<'a, Database = DB>,
Self: Send;
fn update_all_fields<'e, E>(
self,
db: E,
) -> Pin<Box<dyn Future<Output = Result<Self, Error>> + Send + 'e>>
where E: 'e + Send + Executor<'e, Database = DB>;
fn delete<'e, E>(
self,
db: E,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'e>>
where E: 'e + Executor<'e, Database = DB>;
fn fetch_one<'e, 'a, Arg, E>(
id: Arg,
db: E,
) -> Pin<Box<dyn Future<Output = Result<Self, Error>> + Send + 'e>>
where 'a: 'e,
E: 'e + Executor<'e, Database = DB>,
Arg: 'a + Send + Encode<'a, DB> + Type<DB>;
fn query(
query: &str,
) -> QueryAs<'_, DB, Self, <DB as HasArguments<'_>>::Arguments>;
fn select<'args>() -> SelectQueryBuilder<'args, DB, Self>;
}
Expand description
The core trait. a struct that implements Model
can also implement HasModelBuilder
, (and is required to implement Insertable
)
Required Methods§
Sourcefn insert<'a, A>(self, conn: A) -> Insertion<'a, A, Self, DB>
fn insert<'a, A>(self, conn: A) -> Insertion<'a, A, Self, DB>
Insert the model into the database.
Sourcefn update_all_fields<'e, E>(
self,
db: E,
) -> Pin<Box<dyn Future<Output = Result<Self, Error>> + Send + 'e>>
fn update_all_fields<'e, E>( self, db: E, ) -> Pin<Box<dyn Future<Output = Result<Self, Error>> + Send + 'e>>
Model
objects can’t track what fields are updated, so this method will update all fields.
If you want to update only some fields, use update_partial
instead.
fn delete<'e, E>(
self,
db: E,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'e>>where
E: 'e + Executor<'e, Database = DB>,
Sourcefn fetch_one<'e, 'a, Arg, E>(
id: Arg,
db: E,
) -> Pin<Box<dyn Future<Output = Result<Self, Error>> + Send + 'e>>
fn fetch_one<'e, 'a, Arg, E>( id: Arg, db: E, ) -> Pin<Box<dyn Future<Output = Result<Self, Error>> + Send + 'e>>
Get by primary key.
Sourcefn query(
query: &str,
) -> QueryAs<'_, DB, Self, <DB as HasArguments<'_>>::Arguments>
fn query( query: &str, ) -> QueryAs<'_, DB, Self, <DB as HasArguments<'_>>::Arguments>
If query building isn’t meeting your needs, use this method to query the table using raw SQL.
Sourcefn select<'args>() -> SelectQueryBuilder<'args, DB, Self>
fn select<'args>() -> SelectQueryBuilder<'args, DB, Self>
Create a SelectQueryBuilder
to build a query.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.