diff --git a/sqlx-mysql/src/query_result.rs b/sqlx-mysql/src/query_result.rs index 9951b26acb..f008db06ae 100644 --- a/sqlx-mysql/src/query_result.rs +++ b/sqlx-mysql/src/query_result.rs @@ -24,3 +24,13 @@ impl Extend for MySqlQueryResult { } } } +#[cfg(feature = "any")] +/// This conversion attempts to save last_insert_id by converting to i64. +impl From for sqlx_core::any::AnyQueryResult { + fn from(done: MySqlQueryResult) -> Self { + sqlx_core::any::AnyQueryResult { + rows_affected: done.rows_affected(), + last_insert_id: done.last_insert_id().try_into().ok(), + } + } +} diff --git a/sqlx-postgres/src/any.rs b/sqlx-postgres/src/any.rs index 7eae4bcb73..efa9a044bc 100644 --- a/sqlx-postgres/src/any.rs +++ b/sqlx-postgres/src/any.rs @@ -7,7 +7,10 @@ use futures_core::stream::BoxStream; use futures_util::{stream, StreamExt, TryFutureExt, TryStreamExt}; use std::future; -pub use sqlx_core::any::*; +use sqlx_core::any::{ + Any, AnyArguments, AnyColumn, AnyConnectOptions, AnyConnectionBackend, AnyQueryResult, AnyRow, + AnyStatement, AnyTypeInfo, AnyTypeInfoKind, +}; use crate::type_info::PgType; use sqlx_core::connection::Connection; diff --git a/sqlx-postgres/src/query_result.rs b/sqlx-postgres/src/query_result.rs index 870c1aff6c..3a243f3ee6 100644 --- a/sqlx-postgres/src/query_result.rs +++ b/sqlx-postgres/src/query_result.rs @@ -20,9 +20,9 @@ impl Extend for PgQueryResult { } #[cfg(feature = "any")] -impl From for crate::any::AnyQueryResult { +impl From for sqlx_core::any::AnyQueryResult { fn from(done: PgQueryResult) -> Self { - crate::any::AnyQueryResult { + sqlx_core::any::AnyQueryResult { rows_affected: done.rows_affected, last_insert_id: None, } diff --git a/sqlx-sqlite/src/query_result.rs b/sqlx-sqlite/src/query_result.rs index 088e032db6..8c8c27fcf4 100644 --- a/sqlx-sqlite/src/query_result.rs +++ b/sqlx-sqlite/src/query_result.rs @@ -24,3 +24,17 @@ impl Extend for SqliteQueryResult { } } } + +#[cfg(feature = "any")] +impl From for sqlx_core::any::AnyQueryResult { + fn from(done: SqliteQueryResult) -> Self { + let last_insert_id = match done.last_insert_rowid() { + 0 => None, + n => Some(n), + }; + sqlx_core::any::AnyQueryResult { + rows_affected: done.rows_affected(), + last_insert_id, + } + } +}