pub struct SqliteStorage { /* private fields */ }
Expand description
SqliteStorage
provides an interface for interacting with a SQLite database to store and retrieve application data,
primarily [Command
] and [VariableValue
] entities
Implementations§
Source§impl SqliteStorage
impl SqliteStorage
Sourcepub async fn setup_workspace_storage(&self) -> Result<()>
pub async fn setup_workspace_storage(&self) -> Result<()>
Creates temporary tables for workspace-specific commands and completions for the current session by reflecting the schema of the main tables.
Sourcepub async fn is_empty(&self) -> Result<bool>
pub async fn is_empty(&self) -> Result<bool>
Determines if the storage is empty, i.e., if there are no commands in the database
Retrieves all tags from the database along with their usage statistics and if it’s an exact match for the prefix
Sourcepub async fn find_commands(
&self,
filter: SearchCommandsFilter,
working_path: impl Into<String>,
tuning: &SearchCommandTuning,
) -> Result<(Vec<Command>, bool)>
pub async fn find_commands( &self, filter: SearchCommandsFilter, working_path: impl Into<String>, tuning: &SearchCommandTuning, ) -> Result<(Vec<Command>, bool)>
Finds and retrieves commands from the database.
When a search term is present, if there’s a command which alias exactly match the term, that’ll be the only one returned.
Sourcepub async fn delete_tldr_commands(
&self,
category: Option<String>,
) -> Result<u64>
pub async fn delete_tldr_commands( &self, category: Option<String>, ) -> Result<u64>
Removes tldr commands
Sourcepub async fn insert_command(&self, command: Command) -> Result<Command>
pub async fn insert_command(&self, command: Command) -> Result<Command>
Inserts a new command into the database.
If a command with the same id
or cmd
already exists in the database, an error will be returned.
Sourcepub async fn update_command(&self, command: Command) -> Result<Command>
pub async fn update_command(&self, command: Command) -> Result<Command>
Updates an existing command in the database.
If the command to be updated does not exist, an error will be returned.
Sourcepub async fn increment_command_usage(
&self,
command_id: Uuid,
path: impl AsRef<str> + Send + 'static,
) -> Result<i32>
pub async fn increment_command_usage( &self, command_id: Uuid, path: impl AsRef<str> + Send + 'static, ) -> Result<i32>
Increments the usage of a command
Sourcepub async fn delete_command(&self, command_id: Uuid) -> Result<()>
pub async fn delete_command(&self, command_id: Uuid) -> Result<()>
Deletes an existing command from the database.
If the command to be deleted does not exist, an error will be returned.
Source§impl SqliteStorage
impl SqliteStorage
Sourcepub async fn list_variable_completion_root_cmds(&self) -> Result<Vec<String>>
pub async fn list_variable_completion_root_cmds(&self) -> Result<Vec<String>>
Lists all unique root commands for variable completions
Sourcepub async fn list_variable_completions(
&self,
flat_root_cmd: Option<String>,
flat_variable_names: Option<Vec<String>>,
skip_workspace: bool,
) -> Result<Vec<VariableCompletion>>
pub async fn list_variable_completions( &self, flat_root_cmd: Option<String>, flat_variable_names: Option<Vec<String>>, skip_workspace: bool, ) -> Result<Vec<VariableCompletion>>
Lists variable completions, optionally filtering by root command and variable
Stored completions take precedence over workspace ones
Sourcepub async fn get_completions_for(
&self,
flat_root_cmd: impl Into<String>,
flat_variable_names: Vec<String>,
) -> Result<Vec<VariableCompletion>>
pub async fn get_completions_for( &self, flat_root_cmd: impl Into<String>, flat_variable_names: Vec<String>, ) -> Result<Vec<VariableCompletion>>
Retrieves the variable completions that must be considered for a given root command and variable, considering the order preference:
- A completion matching the specific root command is preferred over a generic one
- A user-defined completion is preferred over a workspace one
Sourcepub async fn insert_variable_completion(
&self,
var: VariableCompletion,
) -> Result<VariableCompletion>
pub async fn insert_variable_completion( &self, var: VariableCompletion, ) -> Result<VariableCompletion>
Inserts a new variable completion into the database if it doesn’t already exist
Sourcepub async fn update_variable_completion(
&self,
var: VariableCompletion,
) -> Result<VariableCompletion>
pub async fn update_variable_completion( &self, var: VariableCompletion, ) -> Result<VariableCompletion>
Updates an existing variable completion
Sourcepub async fn delete_variable_completion(
&self,
completion_id: Uuid,
) -> Result<()>
pub async fn delete_variable_completion( &self, completion_id: Uuid, ) -> Result<()>
Deletes an existing variable completion from the database
Sourcepub async fn delete_variable_completion_by_key(
&self,
flat_root_cmd: impl Into<String>,
flat_variable_name: impl Into<String>,
) -> Result<Option<VariableCompletion>>
pub async fn delete_variable_completion_by_key( &self, flat_root_cmd: impl Into<String>, flat_variable_name: impl Into<String>, ) -> Result<Option<VariableCompletion>>
Deletes an existing variable completion from the database given its unique key
Source§impl SqliteStorage
impl SqliteStorage
Sourcepub async fn import_items(
&self,
items: impl Stream<Item = Result<ImportExportItem>> + Send + 'static,
overwrite: bool,
workspace: bool,
) -> Result<ImportStats>
pub async fn import_items( &self, items: impl Stream<Item = Result<ImportExportItem>> + Send + 'static, overwrite: bool, workspace: bool, ) -> Result<ImportStats>
Imports a collection of commands and completions into the database.
This function allows for bulk insertion or updating of items from a stream.
The behavior for existing items depends on the overwrite
flag.
Sourcepub async fn export_user_commands(
&self,
filter: Option<Regex>,
) -> impl Stream<Item = Result<Command>> + Send + 'static
pub async fn export_user_commands( &self, filter: Option<Regex>, ) -> impl Stream<Item = Result<Command>> + Send + 'static
Export user commands
Sourcepub async fn export_user_variable_completions(
&self,
flat_root_cmd_and_var: impl IntoIterator<Item = (String, String)>,
) -> Result<Vec<VariableCompletion>>
pub async fn export_user_variable_completions( &self, flat_root_cmd_and_var: impl IntoIterator<Item = (String, String)>, ) -> Result<Vec<VariableCompletion>>
Exports user variable completions for a given set of (flat_root_cmd, flat_variable_name) pairs.
For each pair, it resolves the best match by first looking for a completion with the
specific flat_root_cmd
, falling back to one with an empty one if not found.
Note: This method does not consider workspace-specific completions, only user tables.
Source§impl SqliteStorage
impl SqliteStorage
Sourcepub async fn find_variable_values(
&self,
flat_root_cmd: impl Into<String>,
flat_variable_name: impl Into<String>,
flat_variable_names: Vec<String>,
working_path: impl Into<String>,
context: &BTreeMap<String, String>,
tuning: &SearchVariableTuning,
) -> Result<Vec<(VariableValue, f64)>>
pub async fn find_variable_values( &self, flat_root_cmd: impl Into<String>, flat_variable_name: impl Into<String>, flat_variable_names: Vec<String>, working_path: impl Into<String>, context: &BTreeMap<String, String>, tuning: &SearchVariableTuning, ) -> Result<Vec<(VariableValue, f64)>>
Finds variable values for a given root command, variable and context.
The method searches for values matching any of these individual flat_variable_names
terms, as well as the
flat_variable_name
composite variable itself.
Results are returned for the original input variable, even if they don’t explicitly exists, ordered to prioritize overall relevance.
Sourcepub async fn insert_variable_value(
&self,
value: VariableValue,
) -> Result<VariableValue>
pub async fn insert_variable_value( &self, value: VariableValue, ) -> Result<VariableValue>
Inserts a new variable value into the database if it doesn’t already exist
Sourcepub async fn update_variable_value(
&self,
value: VariableValue,
) -> Result<VariableValue>
pub async fn update_variable_value( &self, value: VariableValue, ) -> Result<VariableValue>
Updates an existing variable value
Sourcepub async fn increment_variable_value_usage(
&self,
value_id: i32,
path: impl AsRef<str> + Send + 'static,
context: &BTreeMap<String, String>,
) -> Result<i32>
pub async fn increment_variable_value_usage( &self, value_id: i32, path: impl AsRef<str> + Send + 'static, context: &BTreeMap<String, String>, ) -> Result<i32>
Increments the usage of a variable value
Sourcepub async fn delete_variable_value(&self, value_id: i32) -> Result<()>
pub async fn delete_variable_value(&self, value_id: i32) -> Result<()>
Deletes an existing variable value from the database.
If the value to be deleted does not exist, an error will be returned.
Source§impl SqliteStorage
impl SqliteStorage
Source§impl SqliteStorage
impl SqliteStorage
Sourcepub async fn new(data_dir: impl AsRef<Path>) -> Result<Self>
pub async fn new(data_dir: impl AsRef<Path>) -> Result<Self>
Creates a new instance of SqliteStorage
using a persistent database file.
If INTELLI_STORAGE environment variable is set, it will use the specified path for the database file.
pub async fn query(&self, sql: String) -> Result<String>
Trait Implementations§
Source§impl Clone for SqliteStorage
impl Clone for SqliteStorage
Source§fn clone(&self) -> SqliteStorage
fn clone(&self) -> SqliteStorage
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreAuto Trait Implementations§
impl Freeze for SqliteStorage
impl RefUnwindSafe for SqliteStorage
impl Send for SqliteStorage
impl Sync for SqliteStorage
impl Unpin for SqliteStorage
impl UnwindSafe for SqliteStorage
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> 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<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