use crate::interfaces::Record;
use super::expr::ColumnRef;
use super::handles::{Reference, Table};
use super::source::{ProjectionSource, Source, SourceMeta};
pub trait Projectable: Record {
type Columns: Clone;
fn projected_columns(source: ProjectionSource) -> <Self as Projectable>::Columns;
}
#[doc(hidden)]
pub trait HasCols: Record {
type Columns: Clone;
#[doc(hidden)]
fn cols_for_table(table: &Table) -> Self::Columns;
#[doc(hidden)]
fn cols_for_reference(reference: &Reference) -> Self::Columns;
}
pub trait IntoTableSource {
#[doc(hidden)]
fn into_table_source(self) -> Source;
}
pub trait IntoSourceMeta {
#[doc(hidden)]
fn source_meta(&self) -> SourceMeta;
}
pub trait IntoColumnRef {
#[doc(hidden)]
fn into_column_ref(self) -> ColumnRef;
}
impl IntoColumnRef for ColumnRef {
fn into_column_ref(self) -> ColumnRef {
self
}
}