use super::{Element, QueryOutput, RowSource, Schema, SqlConn};
use query_projector_traits::errors::Result;
pub trait Projector {
fn project(
&self,
schema: &Schema,
sqlite: &dyn SqlConn,
rows: &mut dyn RowSource,
) -> Result<QueryOutput>;
fn columns<'s>(&'s self) -> Box<dyn Iterator<Item = &'s Element> + 's>;
}
mod constant;
mod pull_two_stage;
mod simple;
pub use self::constant::ConstantProjector;
pub(crate) use self::simple::{CollProjector, RelProjector, ScalarProjector, TupleProjector};
pub(crate) use self::pull_two_stage::{
CollTwoStagePullProjector, RelTwoStagePullProjector, ScalarTwoStagePullProjector,
TupleTwoStagePullProjector,
};