sqlx/
lib.rs

1#![cfg_attr(docsrs, feature(doc_cfg))]
2#![doc = include_str!("lib.md")]
3
4#[cfg(all(
5    feature = "sqlite-preupdate-hook",
6    not(any(feature = "sqlite", feature = "sqlite-unbundled"))
7))]
8compile_error!(
9    "sqlite-preupdate-hook requires either 'sqlite' or 'sqlite-unbundled' to be enabled"
10);
11
12pub use sqlx_core::acquire::Acquire;
13pub use sqlx_core::arguments::{Arguments, IntoArguments};
14pub use sqlx_core::column::Column;
15pub use sqlx_core::column::ColumnIndex;
16pub use sqlx_core::connection::{ConnectOptions, Connection};
17pub use sqlx_core::database::{self, Database};
18pub use sqlx_core::describe::Describe;
19pub use sqlx_core::executor::{Execute, Executor};
20pub use sqlx_core::from_row::FromRow;
21pub use sqlx_core::pool::{self, Pool};
22#[doc(hidden)]
23pub use sqlx_core::query::query_with_result as __query_with_result;
24pub use sqlx_core::query::{query, query_with};
25pub use sqlx_core::query_as::{query_as, query_as_with};
26pub use sqlx_core::query_builder::{self, QueryBuilder};
27#[doc(hidden)]
28pub use sqlx_core::query_scalar::query_scalar_with_result as __query_scalar_with_result;
29pub use sqlx_core::query_scalar::{query_scalar, query_scalar_with};
30pub use sqlx_core::raw_sql::{raw_sql, RawSql};
31pub use sqlx_core::row::Row;
32pub use sqlx_core::statement::Statement;
33pub use sqlx_core::transaction::{Transaction, TransactionManager};
34pub use sqlx_core::type_info::TypeInfo;
35pub use sqlx_core::types::Type;
36pub use sqlx_core::value::{Value, ValueRef};
37pub use sqlx_core::Either;
38
39#[doc(inline)]
40pub use sqlx_core::error::{self, Error, Result};
41
42#[cfg(feature = "migrate")]
43pub use sqlx_core::migrate;
44
45#[cfg(feature = "mysql")]
46#[cfg_attr(docsrs, doc(cfg(feature = "mysql")))]
47#[doc(inline)]
48pub use sqlx_mysql::{
49    self as mysql, MySql, MySqlConnection, MySqlExecutor, MySqlPool, MySqlTransaction,
50};
51
52#[cfg(feature = "postgres")]
53#[cfg_attr(docsrs, doc(cfg(feature = "postgres")))]
54#[doc(inline)]
55pub use sqlx_postgres::{
56    self as postgres, PgConnection, PgExecutor, PgPool, PgTransaction, Postgres,
57};
58
59#[cfg(feature = "_sqlite")]
60#[cfg_attr(docsrs, doc(cfg(feature = "_sqlite")))]
61#[doc(inline)]
62pub use sqlx_sqlite::{
63    self as sqlite, Sqlite, SqliteConnection, SqliteExecutor, SqlitePool, SqliteTransaction,
64};
65
66#[cfg(feature = "any")]
67#[cfg_attr(docsrs, doc(cfg(feature = "any")))]
68pub use crate::any::{reexports::*, Any, AnyExecutor};
69
70#[cfg(any(feature = "derive", feature = "macros"))]
71#[doc(hidden)]
72pub extern crate sqlx_macros;
73
74// derives
75#[cfg(feature = "derive")]
76#[doc(hidden)]
77pub use sqlx_macros::{FromRow, Type};
78
79// We can't do our normal facade approach with an attribute, but thankfully we can now
80// have docs out-of-line quite easily.
81#[doc = include_str!("macros/test.md")]
82#[cfg(feature = "macros")]
83pub use sqlx_macros::test;
84
85#[doc(hidden)]
86#[cfg(feature = "migrate")]
87pub use sqlx_core::testing;
88
89#[doc(hidden)]
90pub use sqlx_core::rt::test_block_on;
91
92#[cfg(feature = "any")]
93pub mod any;
94
95#[cfg(feature = "macros")]
96mod macros;
97
98// macro support
99#[cfg(feature = "macros")]
100#[doc(hidden)]
101pub mod ty_match;
102
103#[cfg(feature = "macros")]
104#[doc(hidden)]
105pub mod spec_error;
106
107#[doc(hidden)]
108pub use sqlx_core::rt as __rt;
109
110/// Conversions between Rust and SQL types.
111///
112/// To see how each SQL type maps to a Rust type, see the corresponding `types` module for each
113/// database:
114///
115///  * Postgres: [postgres::types]
116///  * MySQL: [mysql::types]
117///  * SQLite: [sqlite::types]
118///
119/// Any external types that have had [`Type`] implemented for, are re-exported in this module
120/// for convenience as downstream users need to use a compatible version of the external crate
121/// to take advantage of the implementation.
122///
123/// [`Type`]: types::Type
124pub mod types {
125    pub use sqlx_core::types::*;
126
127    #[cfg(feature = "derive")]
128    #[doc(hidden)]
129    pub use sqlx_macros::Type;
130}
131
132/// Provides [`Encode`] for encoding values for the database.
133pub mod encode {
134    pub use sqlx_core::encode::{Encode, IsNull};
135
136    #[cfg(feature = "derive")]
137    #[doc(hidden)]
138    pub use sqlx_macros::Encode;
139}
140
141pub use self::encode::Encode;
142
143/// Provides [`Decode`] for decoding values from the database.
144pub mod decode {
145    pub use sqlx_core::decode::Decode;
146
147    #[cfg(feature = "derive")]
148    #[doc(hidden)]
149    pub use sqlx_macros::Decode;
150}
151
152pub use self::decode::Decode;
153
154/// Types and traits for the `query` family of functions and macros.
155pub mod query {
156    pub use sqlx_core::query::{Map, Query};
157    pub use sqlx_core::query_as::QueryAs;
158    pub use sqlx_core::query_scalar::QueryScalar;
159}
160
161/// Convenience re-export of common traits.
162pub mod prelude {
163    pub use super::Acquire;
164    pub use super::ConnectOptions;
165    pub use super::Connection;
166    pub use super::Decode;
167    pub use super::Encode;
168    pub use super::Executor;
169    pub use super::FromRow;
170    pub use super::IntoArguments;
171    pub use super::Row;
172    pub use super::Statement;
173    pub use super::Type;
174}