1use crate::executor::Executor;
7
8mod arguments;
9pub(crate) mod column;
10mod connection;
11mod database;
12mod error;
13mod kind;
14mod options;
15mod query_result;
16pub(crate) mod row;
17mod statement;
18mod transaction;
19pub(crate) mod type_info;
20pub mod types;
21pub(crate) mod value;
22
23pub mod driver;
24
25#[cfg(feature = "migrate")]
26mod migrate;
27
28pub use arguments::{AnyArgumentBuffer, AnyArguments};
29pub use column::AnyColumn;
30pub use connection::AnyConnection;
31use crate::encode::Encode;
34pub use connection::AnyConnectionBackend;
35pub use database::Any;
36pub use kind::AnyKind;
37pub use options::AnyConnectOptions;
38pub use query_result::AnyQueryResult;
39pub use row::AnyRow;
40pub use statement::AnyStatement;
41pub use transaction::AnyTransactionManager;
42pub use type_info::{AnyTypeInfo, AnyTypeInfoKind};
43pub use value::{AnyValue, AnyValueRef};
44
45#[doc(hidden)]
46pub use value::AnyValueKind;
47
48pub type AnyPool = crate::pool::Pool<Any>;
49
50pub type AnyPoolOptions = crate::pool::PoolOptions<Any>;
51
52pub trait AnyExecutor<'c>: Executor<'c, Database = Any> {}
54impl<'c, T: Executor<'c, Database = Any>> AnyExecutor<'c> for T {}
55
56impl_into_arguments_for_arguments!(AnyArguments<'q>);
58impl_acquire!(Any, AnyConnection);
61impl_column_index_for_row!(AnyRow);
62impl_column_index_for_statement!(AnyStatement);
63impl<'q, T> Encode<'q, Any> for Option<T>
67where
68 T: Encode<'q, Any> + 'q,
69{
70 fn encode_by_ref(&self, buf: &mut AnyArgumentBuffer<'q>) -> crate::encode::IsNull {
71 if let Some(value) = self {
72 value.encode_by_ref(buf)
73 } else {
74 buf.0.push(AnyValueKind::Null);
75 crate::encode::IsNull::Yes
76 }
77 }
78}