#![cfg_attr(
feature = "large-tables",
deprecated(
since = "1.2.0",
note = "The large-tables feature has been renamed to 32-column-tables"
)
)]
#![cfg_attr(
feature = "huge-tables",
deprecated(
since = "1.2.0",
note = "The huge-tables feature has been renamed to 64-column-tables"
)
)]
#![cfg_attr(
feature = "x32-column-tables",
deprecated(
since = "1.2.1",
note = "The x32-column-tables feature has been reanmed to 32-column-tables. The x was a workaround for a bug in crates.io that has since been resolved"
)
)]
#![cfg_attr(
feature = "x64-column-tables",
deprecated(
since = "1.2.1",
note = "The x64-column-tables feature has been reanmed to 64-column-tables. The x was a workaround for a bug in crates.io that has since been resolved"
)
)]
#![cfg_attr(
feature = "x128-column-tables",
deprecated(
since = "1.2.1",
note = "The x128-column-tables feature has been reanmed to 128-column-tables. The x was a workaround for a bug in crates.io that has since been resolved"
)
)]
#![cfg_attr(feature = "unstable", feature(specialization, try_from))]
#![deny(
missing_debug_implementations,
missing_copy_implementations,
missing_docs
)]
#![allow(
clippy::option_map_unwrap_or_else,
clippy::option_map_unwrap_or,
clippy::match_same_arms,
clippy::type_complexity,
clippy::redundant_field_names,
// we don't fix that in backports
unused_parens
)]
#![cfg_attr(test, allow(clippy::option_map_unwrap_or, clippy::result_unwrap_used))]
#![warn(
clippy::option_unwrap_used,
clippy::result_unwrap_used,
clippy::print_stdout,
clippy::wrong_pub_self_convention,
clippy::mut_mut,
clippy::non_ascii_literal,
clippy::similar_names,
clippy::unicode_not_nfc,
clippy::enum_glob_use,
clippy::if_not_else,
clippy::items_after_statements,
clippy::used_underscore_binding
)]
#[cfg(feature = "postgres")]
#[macro_use]
extern crate bitflags;
extern crate byteorder;
#[macro_use]
extern crate diesel_derives;
#[doc(hidden)]
pub use diesel_derives::*;
#[macro_use]
mod macros;
#[cfg(test)]
#[macro_use]
extern crate cfg_if;
#[cfg(test)]
pub mod test_helpers;
pub mod associations;
pub mod backend;
pub mod connection;
pub mod data_types;
pub mod deserialize;
#[macro_use]
pub mod expression;
pub mod expression_methods;
#[doc(hidden)]
pub mod insertable;
pub mod query_builder;
pub mod query_dsl;
pub mod query_source;
#[cfg(feature = "r2d2")]
pub mod r2d2;
pub mod result;
pub mod serialize;
#[macro_use]
pub mod sql_types;
pub mod migration;
pub mod row;
pub mod types;
#[cfg(feature = "mysql")]
pub mod mysql;
#[cfg(feature = "postgres")]
pub mod pg;
#[cfg(feature = "sqlite")]
pub mod sqlite;
mod type_impls;
mod util;
pub mod dsl {
#[doc(inline)]
pub use helper_types::*;
#[doc(inline)]
pub use expression::dsl::*;
#[doc(inline)]
pub use query_builder::functions::{
delete, insert_into, insert_or_ignore_into, replace_into, select, sql_query, update,
};
}
pub mod helper_types {
use super::query_builder::locking_clause as lock;
use super::query_dsl::methods::*;
use super::query_dsl::*;
use super::query_source::joins;
#[doc(inline)]
pub use expression::helper_types::*;
pub type Select<Source, Selection> = <Source as SelectDsl<Selection>>::Output;
pub type Filter<Source, Predicate> = <Source as FilterDsl<Predicate>>::Output;
pub type FindBy<Source, Column, Value> = Filter<Source, Eq<Column, Value>>;
#[cfg(feature = "with-deprecated")]
#[allow(deprecated)]
pub type ForUpdate<Source> = <Source as ForUpdateDsl>::Output;
#[cfg(not(feature = "with-deprecated"))]
pub type ForUpdate<Source> = <Source as LockingDsl<lock::ForUpdate>>::Output;
pub type ForNoKeyUpdate<Source> = <Source as LockingDsl<lock::ForNoKeyUpdate>>::Output;
pub type ForShare<Source> = <Source as LockingDsl<lock::ForShare>>::Output;
pub type ForKeyShare<Source> = <Source as LockingDsl<lock::ForKeyShare>>::Output;
pub type SkipLocked<Source> = <Source as ModifyLockDsl<lock::SkipLocked>>::Output;
pub type NoWait<Source> = <Source as ModifyLockDsl<lock::NoWait>>::Output;
pub type Find<Source, PK> = <Source as FindDsl<PK>>::Output;
pub type OrFilter<Source, Predicate> = <Source as OrFilterDsl<Predicate>>::Output;
pub type Order<Source, Ordering> = <Source as OrderDsl<Ordering>>::Output;
pub type ThenOrderBy<Source, Ordering> = <Source as ThenOrderDsl<Ordering>>::Output;
pub type Limit<Source> = <Source as LimitDsl>::Output;
pub type Offset<Source> = <Source as OffsetDsl>::Output;
pub type InnerJoin<Source, Rhs> =
<Source as JoinWithImplicitOnClause<Rhs, joins::Inner>>::Output;
pub type LeftJoin<Source, Rhs> =
<Source as JoinWithImplicitOnClause<Rhs, joins::LeftOuter>>::Output;
use super::associations::HasTable;
use super::query_builder::{AsChangeset, IntoUpdateTarget, UpdateStatement};
pub type Update<Target, Changes> = UpdateStatement<
<Target as HasTable>::Table,
<Target as IntoUpdateTarget>::WhereClause,
<Changes as AsChangeset>::Changeset,
>;
pub type IntoBoxed<'a, Source, DB> = <Source as BoxedDsl<'a, DB>>::Output;
pub type Distinct<Source> = <Source as DistinctDsl>::Output;
#[cfg(feature = "postgres")]
pub type DistinctOn<Source, Expr> = <Source as DistinctOnDsl<Expr>>::Output;
pub type SingleValue<Source> = <Source as SingleValueDsl>::Output;
pub type NullableSelect<Source> = <Source as SelectNullableDsl>::Output;
}
pub mod prelude {
pub use associations::{GroupedBy, Identifiable};
pub use connection::Connection;
#[deprecated(
since = "1.1.0",
note = "Explicitly `use diesel::deserialize::Queryable"
)]
pub use deserialize::Queryable;
pub use expression::{
AppearsOnTable, BoxableExpression, Expression, IntoSql, SelectableExpression,
};
pub use expression_methods::*;
#[doc(inline)]
pub use insertable::Insertable;
#[doc(hidden)]
pub use query_dsl::GroupByDsl;
pub use query_dsl::{BelongingToDsl, JoinOnDsl, QueryDsl, RunQueryDsl, SaveChangesDsl};
pub use query_source::{Column, JoinTo, QuerySource, Table};
pub use result::{ConnectionError, ConnectionResult, OptionalExtension, QueryResult};
#[cfg(feature = "mysql")]
pub use mysql::MysqlConnection;
#[cfg(feature = "postgres")]
pub use pg::PgConnection;
#[cfg(feature = "sqlite")]
pub use sqlite::SqliteConnection;
}
pub use prelude::*;
#[doc(inline)]
pub use query_builder::debug_query;
#[doc(inline)]
pub use query_builder::functions::{
delete, insert_into, insert_or_ignore_into, replace_into, select, sql_query, update,
};
pub use result::Error::NotFound;
pub(crate) mod diesel {
pub use super::*;
}