diff --git a/sqlx-core/src/cursor.rs b/sqlx-core/src/cursor.rs index 2311f0802..ae033cd0b 100644 --- a/sqlx-core/src/cursor.rs +++ b/sqlx-core/src/cursor.rs @@ -3,10 +3,11 @@ use std::future::Future; use futures_core::future::BoxFuture; use futures_core::stream::BoxStream; -use crate::connection::MaybeOwnedConnection; +use crate::connection::{Connect, MaybeOwnedConnection}; use crate::database::{Database, HasRow}; use crate::executor::Execute; -use crate::{Connect, Pool, Row}; +use crate::pool::Pool; +use crate::row::Row; /// Represents a result set, which is generated by executing a query against the database. /// diff --git a/sqlx-core/src/describe.rs b/sqlx-core/src/describe.rs index cb55dbb50..544bf8bc1 100644 --- a/sqlx-core/src/describe.rs +++ b/sqlx-core/src/describe.rs @@ -1,8 +1,9 @@ //! Types for returning SQL type information about queries. -use crate::Database; use std::fmt::{self, Debug}; +use crate::database::Database; + /// The return type of [Executor::describe]. #[non_exhaustive] pub struct Describe diff --git a/sqlx-core/src/lib.rs b/sqlx-core/src/lib.rs index 57d385f0f..320f2ecf4 100644 --- a/sqlx-core/src/lib.rs +++ b/sqlx-core/src/lib.rs @@ -1,3 +1,5 @@ +//! Core of SQLx, the rust SQL toolkit. Not intended to be used directly. + #![forbid(unsafe_code)] #![allow(unused)] #![cfg_attr(docsrs, feature(doc_cfg))] @@ -9,14 +11,14 @@ pub mod error; #[macro_use] mod io; -mod connection; -mod cursor; +pub mod connection; +pub mod cursor; pub mod database; #[macro_use] -mod executor; +pub mod executor; -mod transaction; +pub mod transaction; mod url; #[doc(hidden)] @@ -24,10 +26,7 @@ pub mod runtime; #[macro_use] pub mod arguments; - -#[doc(hidden)] pub mod decode; - pub mod describe; pub mod encode; pub mod pool; @@ -49,32 +48,8 @@ pub mod mysql; #[cfg_attr(docsrs, doc(cfg(feature = "postgres")))] pub mod postgres; -pub use database::Database; - -#[doc(inline)] pub use error::{Error, Result}; -pub use connection::{Connect, Connection}; -pub use cursor::Cursor; -pub use executor::{Execute, Executor}; -pub use transaction::Transaction; - -#[doc(inline)] -pub use pool::Pool; - -#[doc(inline)] -pub use row::{FromRow, Row}; - -#[cfg(feature = "mysql")] -#[cfg_attr(docsrs, doc(cfg(feature = "mysql")))] -#[doc(inline)] -pub use mysql::MySql; - -#[cfg(feature = "postgres")] -#[cfg_attr(docsrs, doc(cfg(feature = "postgres")))] -#[doc(inline)] -pub use postgres::Postgres; - // Named Lifetimes: // 'c: connection // 'q: query string (and arguments) diff --git a/sqlx-core/src/pool/conn.rs b/sqlx-core/src/pool/connection.rs similarity index 98% rename from sqlx-core/src/pool/conn.rs rename to sqlx-core/src/pool/connection.rs index 11697ee87..a32def7cf 100644 --- a/sqlx-core/src/pool/conn.rs +++ b/sqlx-core/src/pool/connection.rs @@ -1,11 +1,12 @@ -use crate::{Connect, Connection, Executor}; use futures_core::future::BoxFuture; use std::ops::{Deref, DerefMut}; use std::sync::Arc; use std::time::Instant; use super::inner::{DecrementSizeGuard, SharedPool}; +use crate::connection::{Connect, Connection}; use crate::describe::Describe; +use crate::executor::Executor; /// A connection checked out from [`Pool`][crate::Pool]. /// diff --git a/sqlx-core/src/pool/executor.rs b/sqlx-core/src/pool/executor.rs index 89ded4da8..c49765bcb 100644 --- a/sqlx-core/src/pool/executor.rs +++ b/sqlx-core/src/pool/executor.rs @@ -3,17 +3,14 @@ use std::ops::DerefMut; use futures_core::{future::BoxFuture, stream::BoxStream}; use futures_util::StreamExt; -use crate::{ - connection::{Connect, Connection}, - describe::Describe, - executor::{Executor, RefExecutor}, - pool::Pool, - Cursor, Database, -}; - use super::PoolConnection; -use crate::database::HasCursor; +use crate::connection::{Connect, Connection}; +use crate::cursor::Cursor; +use crate::database::{Database, HasCursor}; +use crate::describe::Describe; use crate::executor::Execute; +use crate::executor::{Executor, RefExecutor}; +use crate::pool::Pool; impl<'p, C, DB> Executor for &'p Pool where diff --git a/sqlx-core/src/pool/inner.rs b/sqlx-core/src/pool/inner.rs index c1e6bbadb..d3e31aee5 100644 --- a/sqlx-core/src/pool/inner.rs +++ b/sqlx-core/src/pool/inner.rs @@ -16,7 +16,7 @@ use crate::{ error::Error, }; -use super::conn::{Floating, Idle, Live}; +use super::connection::{Floating, Idle, Live}; use super::Options; pub(super) struct SharedPool { diff --git a/sqlx-core/src/pool/mod.rs b/sqlx-core/src/pool/mod.rs index a0e39e3b1..6bf543e6f 100644 --- a/sqlx-core/src/pool/mod.rs +++ b/sqlx-core/src/pool/mod.rs @@ -7,20 +7,19 @@ use std::{ }; use crate::connection::Connect; +use crate::database::Database; use crate::transaction::Transaction; use self::inner::SharedPool; use self::options::Options; -pub use self::conn::PoolConnection; - -mod conn; +mod connection; mod executor; mod inner; mod options; +pub use self::connection::PoolConnection; pub use self::options::Builder; -use crate::Database; /// A pool of database connections. pub struct Pool(Arc>); diff --git a/sqlx-core/src/pool/options.rs b/sqlx-core/src/pool/options.rs index b62cf9226..4aa7a6c73 100644 --- a/sqlx-core/src/pool/options.rs +++ b/sqlx-core/src/pool/options.rs @@ -2,7 +2,7 @@ use std::{marker::PhantomData, time::Duration}; use super::Pool; use crate::connection::Connect; -use crate::Database; +use crate::database::Database; /// Builder for [Pool]. pub struct Builder { diff --git a/sqlx-core/src/postgres/arguments.rs b/sqlx-core/src/postgres/arguments.rs index 5ead9c217..fe1247b63 100644 --- a/sqlx-core/src/postgres/arguments.rs +++ b/sqlx-core/src/postgres/arguments.rs @@ -3,8 +3,8 @@ use byteorder::{ByteOrder, NetworkEndian}; use crate::arguments::Arguments; use crate::encode::{Encode, IsNull}; use crate::io::BufMut; +use crate::postgres::Postgres; use crate::types::Type; -use crate::Postgres; #[derive(Default)] pub struct PgArguments { diff --git a/sqlx-core/src/postgres/connection.rs b/sqlx-core/src/postgres/connection.rs index facdee87a..bd45128c6 100644 --- a/sqlx-core/src/postgres/connection.rs +++ b/sqlx-core/src/postgres/connection.rs @@ -11,17 +11,17 @@ use futures_util::TryFutureExt; use crate::connection::{Connect, Connection}; use crate::describe::{Column, Describe}; +use crate::executor::Executor; use crate::io::{Buf, BufStream, MaybeTlsStream}; use crate::postgres::protocol::{ self, Authentication, AuthenticationMd5, AuthenticationSasl, Decode, Encode, Message, ParameterDescription, PasswordMessage, RowDescription, StartupMessage, StatementId, Terminate, TypeFormat, }; -use crate::postgres::sasl; use crate::postgres::stream::PgStream; -use crate::postgres::{tls, PgError, PgTypeInfo}; +use crate::postgres::{sasl, tls, PgError, PgTypeInfo, Postgres}; use crate::url::Url; -use crate::{Error, Executor, Postgres}; +use crate::Error; /// An asynchronous connection to a [Postgres][super::Postgres] database. /// diff --git a/sqlx-core/src/postgres/cursor.rs b/sqlx-core/src/postgres/cursor.rs index 9a9c84488..478915589 100644 --- a/sqlx-core/src/postgres/cursor.rs +++ b/sqlx-core/src/postgres/cursor.rs @@ -11,14 +11,14 @@ use futures_core::stream::BoxStream; use crate::connection::{ConnectionSource, MaybeOwnedConnection}; use crate::cursor::Cursor; +use crate::database::Database; use crate::database::HasRow; use crate::executor::Execute; use crate::pool::{Pool, PoolConnection}; use crate::postgres::protocol::{ CommandComplete, DataRow, Message, RowDescription, StatementId, TypeFormat, }; -use crate::postgres::{PgArguments, PgConnection, PgRow}; -use crate::{Database, Postgres}; +use crate::postgres::{PgArguments, PgConnection, PgRow, Postgres}; use futures_core::Stream; pub struct PgCursor<'c, 'q> { diff --git a/sqlx-core/src/postgres/mod.rs b/sqlx-core/src/postgres/mod.rs index f1a2600aa..7ae97c9e2 100644 --- a/sqlx-core/src/postgres/mod.rs +++ b/sqlx-core/src/postgres/mod.rs @@ -22,7 +22,7 @@ mod tls; mod types; /// An alias for [`Pool`][crate::Pool], specialized for **Postgres**. -pub type PgPool = super::Pool; +pub type PgPool = crate::pool::Pool; make_query_as!(PgQueryAs, Postgres, PgRow); impl_map_row_for_row!(Postgres, PgRow); diff --git a/sqlx-core/src/postgres/types/mod.rs b/sqlx-core/src/postgres/types/mod.rs index 96b87345b..e5fbd331b 100644 --- a/sqlx-core/src/postgres/types/mod.rs +++ b/sqlx-core/src/postgres/types/mod.rs @@ -2,9 +2,8 @@ use std::fmt::{self, Debug, Display}; use crate::decode::Decode; use crate::postgres::protocol::TypeId; -use crate::postgres::PgValue; +use crate::postgres::{PgValue, Postgres}; use crate::types::TypeInfo; -use crate::Postgres; mod bool; mod bytes; diff --git a/sqlx-core/src/postgres/types/str.rs b/sqlx-core/src/postgres/types/str.rs index 0e47d94b0..bfd8946e2 100644 --- a/sqlx-core/src/postgres/types/str.rs +++ b/sqlx-core/src/postgres/types/str.rs @@ -6,8 +6,9 @@ use crate::encode::Encode; use crate::postgres::protocol::TypeId; use crate::postgres::row::PgValue; use crate::postgres::types::PgTypeInfo; +use crate::postgres::Postgres; use crate::types::Type; -use crate::{Error, Postgres}; +use crate::Error; impl Type for str { fn type_info() -> PgTypeInfo { diff --git a/sqlx-core/src/query.rs b/sqlx-core/src/query.rs index 23382d8cb..f7c99f925 100644 --- a/sqlx-core/src/query.rs +++ b/sqlx-core/src/query.rs @@ -5,6 +5,7 @@ use std::pin::Pin; use std::task::{Context, Poll}; use async_stream::try_stream; +use futures_core::future::BoxFuture; use futures_core::stream::BoxStream; use futures_core::Stream; use futures_util::future::ready; @@ -18,9 +19,9 @@ use crate::cursor::Cursor; use crate::database::{Database, HasCursor, HasRow}; use crate::encode::Encode; use crate::executor::{Execute, Executor, RefExecutor}; +use crate::row::FromRow; use crate::types::Type; -use crate::{Error, FromRow}; -use futures_core::future::BoxFuture; +use crate::Error; /// Raw SQL query with bind parameters. Returned by [`query`][crate::query::query]. pub struct Query<'q, DB, A = ::Arguments> diff --git a/sqlx-core/src/transaction.rs b/sqlx-core/src/transaction.rs index 8e7495ed6..d8510210e 100644 --- a/sqlx-core/src/transaction.rs +++ b/sqlx-core/src/transaction.rs @@ -3,11 +3,11 @@ use std::ops::{Deref, DerefMut}; use futures_core::future::BoxFuture; use crate::connection::Connection; +use crate::database::Database; use crate::database::HasCursor; use crate::describe::Describe; use crate::executor::{Execute, Executor}; use crate::runtime::spawn; -use crate::Database; // Transaction> // Transaction diff --git a/sqlx-core/src/types.rs b/sqlx-core/src/types.rs index d2db88f65..1425acd2f 100644 --- a/sqlx-core/src/types.rs +++ b/sqlx-core/src/types.rs @@ -2,7 +2,7 @@ use std::fmt::{Debug, Display}; -use crate::Database; +use crate::database::Database; #[cfg(feature = "uuid")] #[cfg_attr(docsrs, doc(cfg(feature = "uuid")))] diff --git a/sqlx-macros/src/database/mod.rs b/sqlx-macros/src/database/mod.rs index f14a9fbc2..4e1731b2b 100644 --- a/sqlx-macros/src/database/mod.rs +++ b/sqlx-macros/src/database/mod.rs @@ -1,4 +1,4 @@ -use sqlx::Database; +use sqlx::database::Database; #[derive(PartialEq, Eq)] #[allow(dead_code)] diff --git a/sqlx-macros/src/database/mysql.rs b/sqlx-macros/src/database/mysql.rs index 097ba9c78..a86b7b1f6 100644 --- a/sqlx-macros/src/database/mysql.rs +++ b/sqlx-macros/src/database/mysql.rs @@ -1,5 +1,5 @@ impl_database_ext! { - sqlx::MySql { + sqlx::mysql::MySql { u8, u16, u32, diff --git a/sqlx-macros/src/database/postgres.rs b/sqlx-macros/src/database/postgres.rs index afa3484ca..6051ef785 100644 --- a/sqlx-macros/src/database/postgres.rs +++ b/sqlx-macros/src/database/postgres.rs @@ -1,5 +1,5 @@ impl_database_ext! { - sqlx::Postgres { + sqlx::postgres::Postgres { bool, String, i16, diff --git a/sqlx-macros/src/lib.rs b/sqlx-macros/src/lib.rs index ede05206b..c0272d945 100644 --- a/sqlx-macros/src/lib.rs +++ b/sqlx-macros/src/lib.rs @@ -59,7 +59,7 @@ macro_rules! async_macro ( }; let res: Result = block_on(async { - use sqlx::Connect; + use sqlx::connection::Connect; let db_url = Url::parse(&dotenv::var("DATABASE_URL").map_err(|_| "DATABASE_URL not set")?)?; diff --git a/sqlx-macros/src/query_macros/input.rs b/sqlx-macros/src/query_macros/input.rs index 04de0354d..445152e61 100644 --- a/sqlx-macros/src/query_macros/input.rs +++ b/sqlx-macros/src/query_macros/input.rs @@ -11,8 +11,8 @@ use syn::{ExprGroup, Token}; use quote::{format_ident, ToTokens}; +use sqlx::connection::Connection; use sqlx::describe::Describe; -use sqlx::Connection; /// Macro input shared by `query!()` and `query_file!()` pub struct QueryMacroInput { diff --git a/sqlx-macros/src/query_macros/mod.rs b/sqlx-macros/src/query_macros/mod.rs index 9d05ac247..aa68ccf0d 100644 --- a/sqlx-macros/src/query_macros/mod.rs +++ b/sqlx-macros/src/query_macros/mod.rs @@ -8,8 +8,8 @@ pub use query::expand_query; use crate::database::DatabaseExt; -use sqlx::Connection; -use sqlx::Database; +use sqlx::connection::Connection; +use sqlx::database::Database; mod args; mod input; diff --git a/sqlx-macros/src/query_macros/output.rs b/sqlx-macros/src/query_macros/output.rs index 04e77d716..55996aab4 100644 --- a/sqlx-macros/src/query_macros/output.rs +++ b/sqlx-macros/src/query_macros/output.rs @@ -56,7 +56,7 @@ pub fn quote_query_as( quote! { sqlx::query::<#db_path>(#sql).bind_all(#bind_args).map(|row: #row_path| { - use sqlx::row::Row as _; + use sqlx::Row as _; use sqlx::result_ext::ResultExt as _; Ok(#out_ty { #(#instantiations),* }) diff --git a/sqlx-macros/src/query_macros/query.rs b/sqlx-macros/src/query_macros/query.rs index 8169d729c..d675b67b9 100644 --- a/sqlx-macros/src/query_macros/query.rs +++ b/sqlx-macros/src/query_macros/query.rs @@ -5,7 +5,7 @@ use proc_macro2::TokenStream; use syn::{Ident, Path}; use quote::{format_ident, quote}; -use sqlx::{Connection, Database}; +use sqlx::{connection::Connection, database::Database}; use super::{args, output, QueryMacroInput}; use crate::database::DatabaseExt; diff --git a/src/lib.rs b/src/lib.rs index 51b57ba38..669b48a28 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -7,18 +7,20 @@ compile_error!("one of 'runtime-async-std' or 'runtime-tokio' features must be e #[cfg(all(feature = "runtime-tokio", feature = "runtime-async-std"))] compile_error!("only one of 'runtime-async-std' or 'runtime-tokio' features must be enabled"); -// Modules -pub use sqlx_core::{arguments, describe, error, pool, row, types}; - -// Types -pub use sqlx_core::{ - Connect, Connection, Cursor, Error, Execute, Executor, FromRow, Pool, Result, Row, - Transaction -}; - pub use sqlx_core::database::{Database, HasCursor, HasRawValue, HasRow}; +pub use sqlx_core::describe; +pub use sqlx_core::executor::Executor; +pub use sqlx_core::pool::{self, Pool}; pub use sqlx_core::query::{self, query, Query}; pub use sqlx_core::query_as::{query_as, QueryAs}; +pub use sqlx_core::row::{FromRow, Row}; +pub use sqlx_core::transaction::Transaction; + +#[doc(inline)] +pub use sqlx_core::types::{self, Type}; + +#[doc(inline)] +pub use sqlx_core::error::{self, Error, Result}; #[cfg(feature = "mysql")] #[cfg_attr(docsrs, doc(cfg(feature = "mysql")))] @@ -59,13 +61,13 @@ pub mod decode { } pub mod prelude { - pub use super::Connect as _; - pub use super::Connection as _; - pub use super::Cursor as _; - pub use super::Executor as _; - pub use super::FromRow as _; - pub use super::Row as _; + pub use super::Connect; + pub use super::Connection; + pub use super::Cursor; + pub use super::Executor; + pub use super::FromRow; + pub use super::Row; #[cfg(feature = "postgres")] - pub use super::postgres::PgQueryAs as _; + pub use super::postgres::PgQueryAs; }