Skip to main content

## DatabaseService

# Trait DatabaseService

Source

    pub trait DatabaseService: Send + Sync {
        // Required methods
        fn execute<'life0, 'async_trait>(
            &'life0 self,
            query: Query,
        ) -> Pin<Box<dyn Future<Output = Result<usize, String>> + Send + 'async_trait>>
           where Self: 'async_trait,
                 'life0: 'async_trait;
        fn execute_batch<'life0, 'life1, 'async_trait>(
            &'life0 self,
            sql: &'life1 str,
        ) -> Pin<Box<dyn Future<Output = Result<(), String>> + Send + 'async_trait>>
           where Self: 'async_trait,
                 'life0: 'async_trait,
                 'life1: 'async_trait;
        fn query_one<'life0, 'async_trait, T, F>(
            &'life0 self,
            query: Query,
            mapper: F,
        ) -> Pin<Box<dyn Future<Output = Result<T, String>> + Send + 'async_trait>>
           where T: Send + 'static + 'async_trait,
                 F: Fn(&Row<'_>) -> SqliteResult<T> + Send + 'static + 'async_trait,
                 Self: 'async_trait,
                 'life0: 'async_trait;
        fn query_optional<'life0, 'async_trait, T, F>(
            &'life0 self,
            query: Query,
            mapper: F,
        ) -> Pin<Box<dyn Future<Output = Result<Option<T>, String>> + Send + 'async_trait>>
           where T: Send + 'static + 'async_trait,
                 F: Fn(&Row<'_>) -> SqliteResult<T> + Send + 'static + 'async_trait,
                 Self: 'async_trait,
                 'life0: 'async_trait;
        fn query_many<'life0, 'async_trait, T, F>(
            &'life0 self,
            query: Query,
            mapper: F,
        ) -> Pin<Box<dyn Future<Output = Result<Vec<T>, String>> + Send + 'async_trait>>
           where T: Send + 'static + 'async_trait,
                 F: Fn(&Row<'_>) -> SqliteResult<T> + Send + 'static + 'async_trait,
                 Self: 'async_trait,
                 'life0: 'async_trait;
        fn transaction<'life0, 'async_trait, F, T>(
            &'life0 self,
            f: F,
        ) -> Pin<Box<dyn Future<Output = Result<T, String>> + Send + 'async_trait>>
           where F: FnOnce(&mut Transaction<'_>) -> Result<T, String> + Send + 'static + 'async_trait,
                 T: Send + 'static + 'async_trait,
                 Self: 'async_trait,
                 'life0: 'async_trait;
        fn last_insert_rowid<'life0, 'async_trait>(
            &'life0 self,
        ) -> Pin<Box<dyn Future<Output = Result<i64, String>> + Send + 'async_trait>>
           where Self: 'async_trait,
                 'life0: 'async_trait;
    }

Expand description

Database service trait - abstraction over database operations

## Required Methods§

Source

#### fn execute<'life0, 'async_trait>( &'life0 self, query: Query, ) -> Pin<Box<dyn Future<Output = Result<usize, String>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Execute a query that doesn’t return results (INSERT, UPDATE, DELETE)

Source

#### fn execute_batch<'life0, 'life1, 'async_trait>( &'life0 self, sql: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<(), String>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Execute a batch of SQL statements (for migrations)

Source

#### fn query_one<'life0, 'async_trait, T, F>( &'life0 self, query: Query, mapper: F, ) -> Pin<Box<dyn Future<Output = Result<T, String>> + Send + 'async_trait>>
where T: Send + 'static + 'async_trait, F: Fn(&Row<'_>) -> SqliteResult<T> + Send + 'static + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Query a single row

Source

#### fn query_optional<'life0, 'async_trait, T, F>( &'life0 self, query: Query, mapper: F, ) -> Pin<Box<dyn Future<Output = Result<Option<T>, String>> + Send + 'async_trait>>
where T: Send + 'static + 'async_trait, F: Fn(&Row<'_>) -> SqliteResult<T> + Send + 'static + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Query a single optional row

Source

#### fn query_many<'life0, 'async_trait, T, F>( &'life0 self, query: Query, mapper: F, ) -> Pin<Box<dyn Future<Output = Result<Vec<T>, String>> + Send + 'async_trait>>
where T: Send + 'static + 'async_trait, F: Fn(&Row<'_>) -> SqliteResult<T> + Send + 'static + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Query multiple rows

Source

#### fn transaction<'life0, 'async_trait, F, T>( &'life0 self, f: F, ) -> Pin<Box<dyn Future<Output = Result<T, String>> + Send + 'async_trait>>
where F: FnOnce(&mut Transaction<'_>) -> Result<T, String> + Send + 'static + 'async_trait, T: Send + 'static + 'async_trait, Self: 'async_trait, 'life0: 'async_trait,

Run a transaction with multiple operations

Source

#### fn last_insert_rowid<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<i64, String>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Get the row ID of the most recent successful INSERT

## 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.

## Implementors§

Source §

### impl DatabaseService for RusqliteService