pub struct SQLiteQueryBuilder {
pub db_path: PathBuf,
pub table_name: String,
pub sql_select: Option<String>,
pub sql_where: Option<String>,
pub sql_params: Vec<String>,
pub sql_order_by: Option<String>,
pub sql_limit: Option<i64>,
pub column_adapters: BTreeMap<String, SQLiteColumnAdapter>,
/* private fields */
}Expand description
A lazy query builder for SQLite tables, allowing SQL pushdown optimizations
for commands like length, select, first, and last.
Fields§
§db_path: PathBuf§table_name: String§sql_select: Option<String>§sql_where: Option<String>§sql_params: Vec<String>§sql_order_by: Option<String>§sql_limit: Option<i64>§column_adapters: BTreeMap<String, SQLiteColumnAdapter>Implementations§
Source§impl SQLiteQueryBuilder
impl SQLiteQueryBuilder
pub fn new(db_path: PathBuf, table_name: String, signals: Signals) -> Self
pub fn with_select(self, select: String) -> Self
pub fn with_where(self, where_clause: String, params: Vec<String>) -> Self
pub fn with_order_by(self, order_by: String) -> Self
pub fn with_limit(self, limit: i64) -> Self
pub fn with_column_adapter( self, column_name: String, adapter: SQLiteColumnAdapter, ) -> Self
Sourcepub fn with_unix_millis_datetime_column(self, column_name: String) -> Self
pub fn with_unix_millis_datetime_column(self, column_name: String) -> Self
Register a datetime adapter for a column containing Unix epoch milliseconds.
Sourcepub fn with_millis_duration_column(self, column_name: String) -> Self
pub fn with_millis_duration_column(self, column_name: String) -> Self
Register a duration adapter for a column containing milliseconds.
Sourcepub fn project_output_columns(&self, columns: &[String]) -> Option<Self>
pub fn project_output_columns(&self, columns: &[String]) -> Option<Self>
Projects a subset of output columns from the current SELECT list.
This is used by filter pushdowns (for example, history | select command) where
Nushell refers to post-alias output names, but the underlying SQLite table may have
different source column names.
Example:
- current projection:
command_line as command, duration_ms as duration - requested output:
command - rewritten projection:
command_line as command
If a requested output name cannot be mapped unambiguously to the existing projection,
this returns None so callers can safely fall back to non-pushdown behavior.
This method intentionally does not parse full SQL grammar; it relies on a small, conservative parser that is sufficient for projections we generate internally.
pub fn build_sql(&self) -> String
pub fn execute(&self, call_span: Span) -> Result<PipelineData, ShellError>
pub fn count(&self, call_span: Span) -> Result<i64, ShellError>
Trait Implementations§
Source§impl Clone for SQLiteQueryBuilder
impl Clone for SQLiteQueryBuilder
Source§fn clone(&self) -> SQLiteQueryBuilder
fn clone(&self) -> SQLiteQueryBuilder
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl CustomValue for SQLiteQueryBuilder
impl CustomValue for SQLiteQueryBuilder
Source§fn type_name(&self) -> String
fn type_name(&self) -> String
describe and in error
messages. This does not have to be the same as the name of the struct or enum, but
conventionally often is.Source§fn to_base_value(&self, span: Span) -> Result<Value, ShellError>
fn to_base_value(&self, span: Span) -> Result<Value, ShellError>
Source§fn as_mut_any(&mut self) -> &mut dyn Any
fn as_mut_any(&mut self) -> &mut dyn Any
Source§fn follow_path_int(
&self,
_self_span: Span,
index: usize,
path_span: Span,
optional: bool,
) -> Result<Value, ShellError>
fn follow_path_int( &self, _self_span: Span, index: usize, path_span: Span, optional: bool, ) -> Result<Value, ShellError>
Source§fn follow_path_string(
&self,
_self_span: Span,
column_name: String,
path_span: Span,
_optional: bool,
_: Casing,
) -> Result<Value, ShellError>
fn follow_path_string( &self, _self_span: Span, column_name: String, path_span: Span, _optional: bool, _: Casing, ) -> Result<Value, ShellError>
Source§fn is_iterable(&self) -> bool
fn is_iterable(&self) -> bool
will be replaced by a new custom-value iterator system next release; avoid new uses unless you need current behavior
true if this custom value should be iterable (like a list) when used with
commands like each, where, etc. Read moreSource§fn partial_cmp(&self, _other: &Value) -> Option<Ordering>
fn partial_cmp(&self, _other: &Value) -> Option<Ordering>
std::cmp::PartialOrd)Source§fn operation(
&self,
lhs_span: Span,
operator: Operator,
op: Span,
right: &Value,
) -> Result<Value, ShellError>
fn operation( &self, lhs_span: Span, operator: Operator, op: Span, right: &Value, ) -> Result<Value, ShellError>
Source§fn save(
&self,
path: Spanned<&Path>,
value_span: Span,
save_span: Span,
) -> Result<(), ShellError>
fn save( &self, path: Spanned<&Path>, value_span: Span, save_span: Span, ) -> Result<(), ShellError>
Source§fn notify_plugin_on_drop(&self) -> bool
fn notify_plugin_on_drop(&self) -> bool
true here if you would like to be notified when all
copies of this custom value are dropped in the engine. Read moreSource§fn memory_size(&self) -> usize
fn memory_size(&self) -> usize
Source§impl Debug for SQLiteQueryBuilder
impl Debug for SQLiteQueryBuilder
Source§impl<'de> Deserialize<'de> for SQLiteQueryBuilder
impl<'de> Deserialize<'de> for SQLiteQueryBuilder
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for SQLiteQueryBuilder
impl RefUnwindSafe for SQLiteQueryBuilder
impl Send for SQLiteQueryBuilder
impl Sync for SQLiteQueryBuilder
impl Unpin for SQLiteQueryBuilder
impl UnsafeUnpin for SQLiteQueryBuilder
impl UnwindSafe for SQLiteQueryBuilder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoSpanned for T
impl<T> IntoSpanned for T
Source§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more