pub struct Db { /* private fields */ }Expand description
SQLite tracking database. Same schema as the bash version.
Implementations§
Source§impl Db
impl Db
Sourcepub fn track(&self, record: &TrackRecord) -> Result<()>
pub fn track(&self, record: &TrackRecord) -> Result<()>
Record a command execution.
Sourcepub fn record_invocation(&self, rec: &InvocationRecord) -> Result<()>
pub fn record_invocation(&self, rec: &InvocationRecord) -> Result<()>
Record an invocation for the usage-history ranking. Evicts oldest rows
once the table grows past INVOCATIONS_CAP.
Sourcepub fn prune_invocations(
&self,
filter: &PruneFilter,
dry_run: bool,
) -> Result<u64>
pub fn prune_invocations( &self, filter: &PruneFilter, dry_run: bool, ) -> Result<u64>
Prune invocation rows matching filter. With dry_run=true, returns the
count that would be removed without touching the table. Gain stats in the
commands table are lifetime counters and are never pruned here.
Sourcepub fn export_invocations(&self) -> Result<Vec<InvocationExport>>
pub fn export_invocations(&self) -> Result<Vec<InvocationExport>>
Export all invocation rows (oldest first) for user-driven backup.
Sourcepub fn history_ranking(
&self,
limit: usize,
show_all: bool,
) -> Result<Vec<HistoryRow>>
pub fn history_ranking( &self, limit: usize, show_all: bool, ) -> Result<Vec<HistoryRow>>
Rank command+subcommand pairs as plugin candidates.
Score = SUM(filtered_tokens) — bytes still flowing through to the LLM after filtering. High score = “lowfat hasn’t tamed this row yet,” regardless of whether that’s because there’s no plugin or because the filter is weak. Note: the previous formula was effectively SUM(saved), which inverted the intent and put well-filtered rows at the top.
show_all=false hides trivia (avg raw < 50 tokens or fewer than 2 runs)
where no amount of plugin work could plausibly help.
Sourcepub fn gain_summary(&self) -> Result<GainSummary>
pub fn gain_summary(&self) -> Result<GainSummary>
Lifetime gain summary.
Sourcepub fn top_commands(&self, limit: usize) -> Result<Vec<TopCommand>>
pub fn top_commands(&self, limit: usize) -> Result<Vec<TopCommand>>
Top commands by tokens saved.
Sourcepub fn session_summary(&self, since: &str) -> Result<SessionSummary>
pub fn session_summary(&self, since: &str) -> Result<SessionSummary>
Session summary since a given timestamp.