taitan_orm/database/sqlite/
database.rs1use super::transaction::SqliteTransaction;
2use crate::brave_new_executor_impl;
3use taitan_orm_trait::result::CountResult;
4use crate::executors::SqlExecutor;
5use crate::executors::SqlGenericExecutor;
6use sqlx::SqlitePool;
7use sqlx::Sqlite;
8use taitan_orm_trait::result::Result;
9
10#[derive(Debug, Clone)]
11pub struct SqliteDatabase {
12 pub(crate) sqlite_pool: SqlitePool,
13}
14
15impl SqliteDatabase {
16 pub async fn transaction<'a>(&'a self) -> Result<SqliteTransaction<'a>> {
17 let trx = self.get_pool()?.begin().await?;
18 let transaction = SqliteTransaction::new(trx);
19 Ok(transaction)
20 }
21
22 pub fn get_pool(&self) -> Result<&SqlitePool> {
23 Ok(&self.sqlite_pool)
24 }
25}
26
27
28impl SqlGenericExecutor for SqliteDatabase {
29 type DB = Sqlite;
30 type CountType = CountResult;
31
32 fn get_affected_rows(query_result: &<Self::DB as sqlx::Database>::QueryResult) -> u64 {
33 query_result.rows_affected()
34 }
35}
36
37
38impl SqlExecutor<Sqlite> for SqliteDatabase {
39 brave_new_executor_impl!(sqlx::Sqlite);
40}