use std::marker::PhantomData;
use super::super::expr::{ColumnRef, ExprNode};
use super::super::scope::{QueryScope, ReturningScope};
#[derive(Clone)]
pub struct All<T> {
pub(in crate::queries) scope: QueryScope,
pub(in crate::queries) _marker: PhantomData<fn() -> T>,
}
#[derive(Clone)]
pub struct One<T> {
pub(in crate::queries) scope: QueryScope,
pub(in crate::queries) _marker: PhantomData<fn() -> T>,
}
#[derive(Clone)]
pub struct First<T> {
pub(in crate::queries) scope: QueryScope,
pub(in crate::queries) _marker: PhantomData<fn() -> T>,
}
#[derive(Clone)]
pub struct Slice<T> {
pub(in crate::queries) scope: QueryScope,
pub(in crate::queries) offset: usize,
pub(in crate::queries) count: usize,
pub(in crate::queries) _marker: PhantomData<fn() -> T>,
}
pub struct Count {
pub(in crate::queries) scope: QueryScope,
}
pub struct Exists {
pub(in crate::queries) scope: QueryScope,
}
pub struct Scalar<V> {
pub(in crate::queries) scope: QueryScope,
pub(in crate::queries) expr: ExprNode,
pub(in crate::queries) _marker: PhantomData<fn() -> V>,
}
pub struct Insert<T> {
pub(in crate::queries) scope: QueryScope,
pub(in crate::queries) row: T,
}
pub struct Update<T> {
pub(in crate::queries) scope: QueryScope,
pub(in crate::queries) row: T,
}
pub struct Delete {
pub(in crate::queries) scope: QueryScope,
}
pub struct BatchInsert<'a, T> {
pub(in crate::queries) scope: QueryScope,
pub(in crate::queries) rows: &'a [T],
}
pub struct BatchUpsert<'a, T> {
pub(in crate::queries) scope: QueryScope,
pub(in crate::queries) rows: &'a [T],
pub(in crate::queries) conflict: Vec<ColumnRef>,
}
pub struct OwnedInsert<T> {
pub(in crate::queries) scope: QueryScope,
pub(in crate::queries) row: T,
}
pub struct OwnedUpdate<T> {
pub(in crate::queries) scope: QueryScope,
pub(in crate::queries) row: T,
}
pub struct OwnedBatchInsert<T> {
pub(in crate::queries) scope: QueryScope,
pub(in crate::queries) rows: Vec<T>,
}
pub struct OwnedBatchUpsert<T> {
pub(in crate::queries) scope: QueryScope,
pub(in crate::queries) rows: Vec<T>,
pub(in crate::queries) conflict: Vec<ColumnRef>,
}
pub struct ReturningInsert<R, T> {
pub(in crate::queries) returning: ReturningScope<R>,
pub(in crate::queries) row: T,
}
pub struct ReturningUpdate<R, T> {
pub(in crate::queries) returning: ReturningScope<R>,
pub(in crate::queries) row: T,
}
pub struct ReturningDelete<R> {
pub(in crate::queries) returning: ReturningScope<R>,
}
pub struct ReturningBatchInsert<'a, R, T> {
pub(in crate::queries) returning: ReturningScope<R>,
pub(in crate::queries) rows: &'a [T],
}
pub struct ReturningBatchUpsert<'a, R, T> {
pub(in crate::queries) returning: ReturningScope<R>,
pub(in crate::queries) rows: &'a [T],
pub(in crate::queries) conflict: Vec<ColumnRef>,
}