1#![cfg_attr(feature = "sqlite", doc = include_str!("../README.md"))]
8
9mod ast;
10pub mod compiler;
11pub mod decode;
12pub mod drivers;
13pub mod error;
14pub mod executor;
15pub mod expression;
16pub mod function;
17pub mod migration;
18pub mod query;
19pub mod schema;
20pub mod value;
21pub mod window;
22
23pub use compiler::{CompiledQuery, Dialect, MysqlDialect, PostgresDialect, SqliteDialect};
24pub use decode::{DecodeError, FromRow, FromValue, Row};
25#[cfg(feature = "postgres")]
26pub use drivers::postgres::{
27 PostgresError, PostgresExecutor, PostgresIsolationLevel, PostgresMigrationError,
28 PostgresMigrationOptions, PostgresOptionsError, PostgresPoolHealth,
29 PostgresPoolMetricsSnapshot, PostgresPoolOptions, PostgresPoolStatus, PostgresRetryClass,
30 PostgresRow, PostgresTlsError, PostgresTlsOptions, PostgresTransaction,
31 PostgresTransactionAccessMode, PostgresTransactionError, PostgresTransactionOptions,
32};
33#[cfg(feature = "sqlite")]
34pub use drivers::sqlite::{
35 SqliteError, SqliteExecutor, SqliteJournalMode, SqliteMigrationError, SqliteOptions, SqliteRow,
36 SqliteSavepoint, SqliteSavepointError, SqliteTransaction, SqliteTransactionError,
37};
38pub use error::{Error, Result};
39pub use executor::{
40 Database, DatabaseError, ExecuteResult, Executor, QueryResult, Transaction, TransactionManager,
41};
42pub use expression::{
43 exists, not, Column, Expression, OrderDirection, SelectionExt, SqlComparable, SqlNumeric,
44 WindowBoundary, WindowFrame, WindowFrameUnits,
45};
46pub use function::{
47 bound, cast, coalesce, count, count_all, least, max, min, scalar_subquery, sql_function,
48 TypedExpression,
49};
50pub use migration::{
51 pending_migrations, AppliedMigration, Migration, MigrationBackend, MigrationError,
52 MigrationReport, Migrator, PreparedMigration,
53};
54pub use query::{
55 delete_from, insert_into, lock_table, select_from, select_from_as, sql_query, update_table,
56 ConflictTarget, InsertRow, PostgresTableLockMode, Query, SqlQuery, TableLockQuery,
57};
58pub use schema::{Table, TableRef};
59pub use value::{IntoSqlValue, SqlArray, Value};
60pub use window::{dense_rank, rank, row_number, WindowExpression};
61
62#[macro_export]
123macro_rules! orm_table {
124 (
125 $(#[$table_meta:meta])*
126 $visibility:vis struct $table:ident => $table_name:literal {
127 $(
128 $(#[$column_meta:meta])*
129 $column:ident : $value:ty => $column_name:literal
130 ),* $(,)?
131 }
132 ) => {
133 $(#[$table_meta])*
134 #[derive(Debug, Clone, Copy, Default)]
135 $visibility struct $table;
136
137 impl $crate::Table for $table {
138 const NAME: &'static str = $table_name;
139 }
140
141 impl $table {
142 $(
143 $(#[$column_meta])*
144 $visibility const fn $column() -> $crate::Column<$table, $value> {
145 $crate::Column::new($table_name, $column_name)
146 }
147 )*
148 }
149 };
150}