use crate::rusqlite::AssemblyContext;
use crate::rusqlite::InvertableRusqliteQuery;
use crate::rusqlite::RusqliteQuery;
use crate::sql::Field;
pub trait AssembleRusqliteQuery<F: Field, C> {
fn assemble_rusqlite_query(
&self,
assembly_context: &AssemblyContext,
user_context: &C,
) -> InvertableRusqliteQuery<F>;
fn assemble_finished_rusqlite_query(
&self,
assembly_context: &AssemblyContext,
user_context: &C,
) -> RusqliteQuery<F> {
self.assemble_rusqlite_query(assembly_context, user_context)
.get_corrected_query()
}
fn assemble_rusqlite_query_for_db(&self, user_context: &C) -> RusqliteQuery<F> {
self.assemble_finished_rusqlite_query(&AssemblyContext::new_root(), user_context)
}
}