#![recursion_limit = "1024"]
#![cfg_attr(feature = "nightly", feature(test, const_fn, drop_types_in_const))]
#[cfg(feature = "nightly")]
extern crate test;
#[macro_use]
extern crate bitflags;
extern crate byteorder;
pub extern crate chrono;
pub extern crate either;
#[macro_use]
extern crate error_chain;
extern crate fnv;
#[macro_use]
extern crate futures as lib_futures;
#[macro_use]
extern crate lazy_static;
#[macro_use]
extern crate log;
extern crate regex;
extern crate sha1;
pub extern crate time;
extern crate tokio_core as tokio;
extern crate twox_hash;
extern crate url;
#[cfg(test)]
extern crate env_logger;
#[macro_use]
pub mod macros;
#[macro_use]
mod value;
mod conn;
pub mod consts;
pub mod errors;
mod io;
mod opts;
mod proto;
mod scramble;
#[doc(inline)]
pub use self::conn::Conn;
#[doc(inline)]
pub use self::conn::futures::query_result::{BinaryResult, BinQueryResult, ResultSet,
TextQueryResult, TextResult};
#[doc(inline)]
pub use self::conn::pool::Pool;
#[doc(inline)]
pub use self::conn::stmt::Stmt;
#[doc(inline)]
pub use self::conn::transaction::Transaction;
#[doc(inline)]
pub use self::conn::transaction::futures::query_result::{TransBinQueryResult, TransTextQueryResult};
#[doc(inline)]
pub use self::opts::{Opts, OptsBuilder, WhiteListFsLocalInfileHandler};
#[doc(inline)]
pub use self::proto::{Column, ErrPacket, Row};
#[doc(inline)]
pub use self::value::{from_row, from_row_opt, from_value, from_value_opt, Params, Value};
pub mod futures {
#[doc(inline)]
pub use conn::futures::BatchExec;
#[doc(inline)]
pub use conn::futures::Disconnect;
#[doc(inline)]
pub use conn::futures::DropExec;
#[doc(inline)]
pub use conn::futures::DropQuery;
#[doc(inline)]
pub use conn::futures::First;
#[doc(inline)]
pub use conn::futures::FirstExec;
#[doc(inline)]
pub use conn::futures::NewConn;
#[doc(inline)]
pub use conn::futures::Ping;
#[doc(inline)]
pub use conn::futures::Prepare;
#[doc(inline)]
pub use conn::futures::PrepExec;
#[doc(inline)]
pub use conn::futures::Query;
#[doc(inline)]
pub use conn::futures::Reset;
#[doc(inline)]
pub use conn::futures::query_result::futures::Collect;
#[doc(inline)]
pub use conn::futures::query_result::futures::CollectAll;
#[doc(inline)]
pub use conn::futures::query_result::futures::DropResult;
#[doc(inline)]
pub use conn::futures::query_result::futures::ForEach;
#[doc(inline)]
pub use conn::futures::query_result::futures::Map;
#[doc(inline)]
pub use conn::futures::query_result::futures::Reduce;
#[doc(inline)]
pub use conn::pool::futures::DisconnectPool;
#[doc(inline)]
pub use conn::pool::futures::GetConn;
#[doc(inline)]
pub use conn::stmt::futures::Batch;
#[doc(inline)]
pub use conn::stmt::futures::Execute;
#[doc(inline)]
pub use conn::stmt::futures::First as StmtFirst;
#[doc(inline)]
pub use conn::transaction::futures::Commit;
#[doc(inline)]
pub use conn::transaction::futures::Rollback;
#[doc(inline)]
pub use conn::transaction::futures::StartTransaction;
#[doc(inline)]
pub use conn::transaction::futures::TransBatchExec;
#[doc(inline)]
pub use conn::transaction::futures::TransFirst;
#[doc(inline)]
pub use conn::transaction::futures::TransFirstExec;
#[doc(inline)]
pub use conn::transaction::futures::TransPrepExec;
#[doc(inline)]
pub use conn::transaction::futures::TransQuery;
}
pub mod prelude {
#[doc(inline)]
pub use conn::futures::query_result::QueryResult;
#[doc(inline)]
pub use conn::futures::query_result::ResultKind;
#[doc(inline)]
pub use conn::futures::query_result::UnconsumedQueryResult;
#[doc(inline)]
pub use opts::LocalInfileHandler;
#[doc(inline)]
pub use value::ConvIr;
#[doc(inline)]
pub use value::FromRow;
#[doc(inline)]
pub use value::FromValue;
#[doc(inline)]
pub use value::ToValue;
}
#[cfg(test)]
mod test_misc {
use std::env;
use opts;
lazy_static! {
pub static ref DATABASE_URL: String = {
if let Ok(url) = env::var("DATABASE_URL") {
let opts = opts::Opts::from_url(&url).expect("DATABASE_URL invalid");
if opts.get_db_name().expect("a database name is required").is_empty() {
panic!("database name is empty");
}
url
} else {
"mysql://root:password@127.0.0.1:3307/mysql".into()
}
};
}
}