pub mod builder;
pub mod cache;
pub mod clause;
pub mod cte;
pub mod eager;
pub mod expr;
pub mod join;
pub mod select;
pub mod set_ops;
pub mod subquery;
pub use builder::{
DeleteBuilder, InsertBuilder, InsertManyBuilder, OnConflict, QueryBuilder, SetClause,
UpdateBuilder,
};
pub use cache::{StatementCache, cache_key};
pub use clause::{Limit, Offset, OrderBy, Where};
pub use cte::{Cte, CteRef, WithQuery};
pub use eager::{EagerLoader, IncludePath};
pub use expr::{
BinaryOp, Dialect, Expr, UnaryOp, WindowBuilder, WindowFrame, WindowFrameBound, WindowFrameType,
};
pub use join::{Join, JoinType};
pub use select::{
PolymorphicJoined, PolymorphicJoined2, PolymorphicJoined3, PolymorphicJoinedSelect,
PolymorphicJoinedSelect2, PolymorphicJoinedSelect3, Select,
};
pub use set_ops::{
SetOpType, SetOperation, except, except_all, intersect, intersect_all, union, union_all,
};
pub use subquery::SelectQuery;
use asupersync::{Cx, Outcome};
use sqlmodel_core::{Connection, Row, Value};
#[macro_export]
macro_rules! select {
($model:ty) => {
$crate::Select::<$model>::new()
};
}
#[macro_export]
macro_rules! insert {
($model:expr) => {
$crate::builder::InsertBuilder::new($model)
};
}
#[macro_export]
macro_rules! insert_many {
($models:expr) => {
$crate::builder::InsertManyBuilder::new($models)
};
}
#[macro_export]
macro_rules! update {
($model:expr) => {
$crate::builder::UpdateBuilder::new($model)
};
}
#[macro_export]
macro_rules! delete {
($model:ty) => {
$crate::builder::DeleteBuilder::<$model>::new()
};
}
pub async fn raw_query<C: Connection>(
cx: &Cx,
conn: &C,
sql: &str,
params: &[Value],
) -> Outcome<Vec<Row>, sqlmodel_core::Error> {
conn.query(cx, sql, params).await
}
pub async fn raw_execute<C: Connection>(
cx: &Cx,
conn: &C,
sql: &str,
params: &[Value],
) -> Outcome<u64, sqlmodel_core::Error> {
conn.execute(cx, sql, params).await
}