pub trait Database {
// Required methods
fn select<T>(
&self,
query: Query,
) -> Result<Vec<<T as TableSchema>::Record>, DbmsError>
where T: TableSchema;
fn select_raw(
&self,
table: &str,
query: Query,
) -> Result<Vec<Vec<(ColumnDef, Value)>>, DbmsError>;
fn insert<T>(
&self,
record: <T as TableSchema>::Insert,
) -> Result<(), DbmsError>
where T: TableSchema,
<T as TableSchema>::Insert: InsertRecord<Schema = T>;
fn update<T>(
&self,
patch: <T as TableSchema>::Update,
) -> Result<u64, DbmsError>
where T: TableSchema,
<T as TableSchema>::Update: UpdateRecord<Schema = T>;
fn delete<T>(
&self,
behaviour: DeleteBehavior,
filter: Option<Filter>,
) -> Result<u64, DbmsError>
where T: TableSchema;
fn commit(&mut self) -> Result<(), DbmsError>;
fn rollback(&mut self) -> Result<(), DbmsError>;
}Expand description
This module defines the Database trait and related database functionalities.
Required Methods§
Sourcefn select<T>(
&self,
query: Query,
) -> Result<Vec<<T as TableSchema>::Record>, DbmsError>where
T: TableSchema,
fn select<T>(
&self,
query: Query,
) -> Result<Vec<<T as TableSchema>::Record>, DbmsError>where
T: TableSchema,
Sourcefn select_raw(
&self,
table: &str,
query: Query,
) -> Result<Vec<Vec<(ColumnDef, Value)>>, DbmsError>
fn select_raw( &self, table: &str, query: Query, ) -> Result<Vec<Vec<(ColumnDef, Value)>>, DbmsError>
Executes a generic SELECT and returns raw column-value pairs.
Unlike Database::select, this method does not require a concrete
table type. It takes a table name and dispatches internally.
Sourcefn delete<T>(
&self,
behaviour: DeleteBehavior,
filter: Option<Filter>,
) -> Result<u64, DbmsError>where
T: TableSchema,
fn delete<T>(
&self,
behaviour: DeleteBehavior,
filter: Option<Filter>,
) -> Result<u64, DbmsError>where
T: TableSchema,
Executes a DELETE query.
§Arguments
behaviour- TheDeleteBehaviorto apply for foreign key constraints.filter- An optionalFilterto specify which records to delete.
§Returns
The number of rows deleted.
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.