use crate::rusqlite::AssemblyContext;
use crate::rusqlite::InvertableRusqliteQuery;
use crate::rusqlite::RusqliteQuery;
use crate::sql::Field;
pub trait TryAssembleRusqliteQuery<F: Field, C> {
type Error;
fn try_assemble_rusqlite_query(
&self,
assembly_context: &AssemblyContext,
user_context: &C,
) -> Result<InvertableRusqliteQuery<F>, Self::Error>;
fn try_assemble_finished_rusqlite_query(
&self,
assembly_context: &AssemblyContext,
user_context: &C,
) -> Result<RusqliteQuery<F>, Self::Error> {
Ok(self
.try_assemble_rusqlite_query(assembly_context, user_context)?
.get_corrected_query())
}
fn try_assemble_rusqlite_query_for_db(
&self,
user_context: &C,
) -> Result<RusqliteQuery<F>, Self::Error> {
self.try_assemble_finished_rusqlite_query(&AssemblyContext::new_root(), user_context)
}
}