use easy_macros::always_context;
use sqlx::Executor;
use crate::Driver;
use super::DriverArguments;
#[always_context]
#[async_trait::async_trait]
pub trait ToConvert<D: Driver> {
async fn get<'a>(
exec: impl Executor<'_, Database = D::InternalDriver>,
query: sqlx::query::Query<'a, D::InternalDriver, DriverArguments<'a, D>>,
) -> anyhow::Result<Self>
where
Self: Sized;
}
#[always_context]
pub trait Output<Table, D: Driver>: Sized {
type DataToConvert: ToConvert<D>;
type UsedForChecks;
fn select(current_query: &mut String);
fn convert(data: Self::DataToConvert) -> anyhow::Result<Self>;
}