use crate::QueryParams;
use serde::Serialize;
use sqlx::Database;
pub trait DatabaseQueryDefaults: Database {
fn build_default_query<'p, T>(params: &'p QueryParams<T>) -> (Vec<String>, Self::Arguments<'p>)
where
T: Default + Serialize;
}
#[cfg(feature = "postgres")]
impl DatabaseQueryDefaults for sqlx::Postgres {
fn build_default_query<'p, T>(params: &'p QueryParams<T>) -> (Vec<String>, Self::Arguments<'p>)
where
T: Default + Serialize,
{
use crate::paginated_query_as::examples::postgres_examples::build_query_with_safe_defaults;
build_query_with_safe_defaults::<T, sqlx::Postgres>(params)
}
}
#[cfg(feature = "sqlite")]
impl DatabaseQueryDefaults for sqlx::Sqlite {
fn build_default_query<'p, T>(params: &'p QueryParams<T>) -> (Vec<String>, Self::Arguments<'p>)
where
T: Default + Serialize,
{
use crate::QueryBuilder;
QueryBuilder::<T, sqlx::Sqlite>::new()
.with_search(params)
.with_filters(params)
.with_date_range(params)
.build()
}
}