diff --git a/src/entity/base_entity.rs b/src/entity/base_entity.rs
index 7ba1e965..764f2524 100644
--- a/src/entity/base_entity.rs
+++ b/src/entity/base_entity.rs
@@ -293,7 +293,7 @@ pub trait EntityTrait: EntityName {
/// assert_eq!(
/// db.into_transaction_log(),
/// vec![Transaction::from_sql_and_values(
- /// DbBackend::Postgres, r#"INSERT INTO "cake" ("name") VALUES ($1)"#, vec!["Apple Pie".into()]
+ /// DbBackend::Postgres, r#"INSERT INTO "cake" ("name") VALUES ($1) RETURNING "id""#, vec!["Apple Pie".into()]
/// )]);
/// ```
fn insert(model: A) -> Insert
@@ -344,7 +344,7 @@ pub trait EntityTrait: EntityName {
/// assert_eq!(
/// db.into_transaction_log(),
/// vec![Transaction::from_sql_and_values(
- /// DbBackend::Postgres, r#"INSERT INTO "cake" ("name") VALUES ($1), ($2)"#,
+ /// DbBackend::Postgres, r#"INSERT INTO "cake" ("name") VALUES ($1), ($2) RETURNING "id""#,
/// vec!["Apple Pie".into(), "Orange Scone".into()]
/// )]);
/// ```
diff --git a/src/executor/insert.rs b/src/executor/insert.rs
index 1f4936ba..d580f110 100644
--- a/src/executor/insert.rs
+++ b/src/executor/insert.rs
@@ -1,5 +1,5 @@
use crate::{
- error::*, ActiveModelTrait, DatabaseConnection, EntityTrait, Insert, PrimaryKeyTrait,
+ error::*, ActiveModelTrait, DatabaseConnection, DbBackend, EntityTrait, Insert, PrimaryKeyTrait,
Statement, TryFromU64,
};
use sea_query::InsertStatement;
@@ -37,8 +37,7 @@ where
// TODO: extract primary key's value from query
// so that self is dropped before entering await
let mut query = self.query;
- #[cfg(feature = "sqlx-postgres")]
- if let DatabaseConnection::SqlxPostgresPoolConnection(_) = db {
+ if db.get_database_backend() == DbBackend::Postgres {
use crate::{sea_query::Query, Iterable};
if ::PrimaryKey::iter().count() > 0 {
query.returning(
@@ -86,14 +85,13 @@ where
{
type PrimaryKey = <::Entity as EntityTrait>::PrimaryKey;
type ValueTypeOf = as PrimaryKeyTrait>::ValueType;
- let last_insert_id = match db {
- #[cfg(feature = "sqlx-postgres")]
- DatabaseConnection::SqlxPostgresPoolConnection(conn) => {
+ let last_insert_id = match db.get_database_backend() {
+ DbBackend::Postgres => {
use crate::{sea_query::Iden, Iterable};
let cols = PrimaryKey::::iter()
.map(|col| col.to_string())
.collect::>();
- let res = conn.query_one(statement).await?.unwrap();
+ let res = db.query_one(statement).await?.unwrap();
res.try_get_many("", cols.as_ref()).unwrap_or_default()
}
_ => {
diff --git a/src/executor/paginator.rs b/src/executor/paginator.rs
index 24822111..608d9dc1 100644
--- a/src/executor/paginator.rs
+++ b/src/executor/paginator.rs
@@ -1,4 +1,4 @@
-use crate::{error::*, DatabaseConnection, SelectorTrait};
+use crate::{error::*, DatabaseConnection, DbBackend, SelectorTrait};
use async_stream::stream;
use futures::Stream;
use sea_query::{Alias, Expr, SelectStatement};
@@ -63,11 +63,8 @@ where
Some(res) => res,
None => return Ok(0),
};
- let num_items = match self.db {
- #[cfg(feature = "sqlx-postgres")]
- DatabaseConnection::SqlxPostgresPoolConnection(_) => {
- result.try_get::("", "num_items")? as usize
- }
+ let num_items = match builder {
+ DbBackend::Postgres => result.try_get::("", "num_items")? as usize,
_ => result.try_get::("", "num_items")? as usize,
};
Ok(num_items)
@@ -192,7 +189,7 @@ mod tests {
(db, vec![page1, page2, page3])
}
- fn setup_num_items() -> (DatabaseConnection, i32) {
+ fn setup_num_items() -> (DatabaseConnection, i64) {
let num_items = 3;
let db = MockDatabase::new(DbBackend::Postgres)
.append_query_results(vec![vec![maplit::btreemap! {