pub struct CacheManager { /* private fields */ }Expand description
Manages cache directory and cache file operations
Implementations§
Source§impl CacheManager
impl CacheManager
Sourcepub fn with_dir(cache_dir: PathBuf) -> Self
pub fn with_dir(cache_dir: PathBuf) -> Self
Create a CacheManager rooted at an explicit directory (primarily for testing).
Sourcepub fn new(app_name: &str) -> Result<Self>
pub fn new(app_name: &str) -> Result<Self>
Create a CacheManager for app_name. DATUI_CACHE_DIR overrides the location;
the test suite sets it so opens never record fixtures in the developer’s recents.
Sourcepub fn cache_file(&self, filename: &str) -> PathBuf
pub fn cache_file(&self, filename: &str) -> PathBuf
Get path to a specific cache file
Sourcepub fn ensure_cache_dir(&self) -> Result<()>
pub fn ensure_cache_dir(&self) -> Result<()>
Ensure the cache directory exists
Sourcepub fn clear_all(&self) -> Result<()>
pub fn clear_all(&self) -> Result<()>
Remove every cache kind’s directory and line-file list (recents, histories, hidden sources, remembered places). Not lock files (another instance may hold them), the log, Data Quality copies (owned by their sessions), or views (config).
Sourcepub fn load_history_file(&self, history_id: &str) -> Result<Vec<String>>
pub fn load_history_file(&self, history_id: &str) -> Result<Vec<String>>
Load a history file. An unreadable file is an error, never an empty list (the next push would write it back and lose every entry); a non-UTF-8 line is skipped alone.
Sourcepub fn update_history_file<F>(
&self,
history_id: &str,
update: F,
) -> Result<HistoryUpdate>
pub fn update_history_file<F>( &self, history_id: &str, update: F, ) -> Result<HistoryUpdate>
Apply update to a history file with the read-modify-write under an exclusive
lock: atomic writes prevent corruption but not lost updates from instances
opening datasets at once. The lock is awaited up to LOCK_TIMEOUT, far past
realistic contention, then the update is dropped: history never delays what the
user asked for.
Source§impl CacheManager
impl CacheManager
Sourcepub fn load_recents(&self) -> Vec<PathBuf>
pub fn load_recents(&self) -> Vec<PathBuf>
Recently opened dataset paths, most recent first: the only thing datui remembers about your data between runs, and deleting it loses only ordering.
Sourcepub fn load_recents_with_visits(
&self,
) -> (Vec<PathBuf>, HashMap<PathBuf, Visits>)
pub fn load_recents_with_visits( &self, ) -> (Vec<PathBuf>, HashMap<PathBuf, Visits>)
Recents, most recent first, with each one’s visits, in one read.
Sourcepub fn load_folds(&self) -> HashMap<String, bool>
pub fn load_folds(&self) -> HashMap<String, bool>
Home sections the user folded (title<TAB>1) or opened (title<TAB>0), by title;
unlisted sections take their default.
Sourcepub fn save_folds(&self, folds: &HashMap<String, bool>)
pub fn save_folds(&self, folds: &HashMap<String, bool>)
Remember the fold state. Failing to write it loses nothing but a preference.
Sourcepub fn terminal_mode(&self, terminal: &str) -> Option<ThemeMode>
pub fn terminal_mode(&self, terminal: &str) -> Option<ThemeMode>
The background mode terminal last reported, for the next start’s first frame
under theme.mode = "auto". One line per terminal: key<TAB>dark.
Sourcepub fn remember_terminal_mode(&self, terminal: &str, mode: ThemeMode)
pub fn remember_terminal_mode(&self, terminal: &str, mode: ThemeMode)
Remember what terminal answered, when it differs from what is remembered.
Sourcepub fn forget_recent(&self, path: &Path)
pub fn forget_recent(&self, path: &Path)
Forget one recent path: an editable recents list is one people trust.
Sourcepub fn forget_recents(&self, paths: &[PathBuf])
pub fn forget_recents(&self, paths: &[PathBuf])
Forget several recently opened paths at once: every recent under one place.
Sourcepub fn clear_recents(&self)
pub fn clear_recents(&self)
Forget every recently opened path, leaving other caches alone.
Sourcepub fn push_recent(&self, path: &Path) -> HistoryUpdate
pub fn push_recent(&self, path: &Path) -> HistoryUpdate
Record a path as most recently opened, deduplicated and capped. Failures are ignored: a convenience list must never hinder opening data. The result tells a write from a contended skip.
Source§impl CacheManager
impl CacheManager
Sourcepub fn dataset_shape(
&self,
path: &str,
fingerprint: &str,
) -> Option<DatasetShape>
pub fn dataset_shape( &self, path: &str, fingerprint: &str, ) -> Option<DatasetShape>
The remembered shape of a dataset if fingerprint still matches (a mismatched
entry has no correct use). A hit counts as use, so unchanging datasets stay.
Sourcepub fn has_dataset_shape(&self, path: &str) -> bool
pub fn has_dataset_shape(&self, path: &str) -> bool
Whether any shape is kept for path: one stat.
Sourcepub fn save_dataset_shape(&self, path: &str, shape: DatasetShape)
pub fn save_dataset_shape(&self, path: &str, shape: DatasetShape)
Remember one dataset’s shape, keeping the others while they fit the budget.
The footers counts of the dataset at path have read, by file.
Remember the footers a count of the dataset at path read, by file.
Sourcepub fn cloud_listing(&self, id: &str, fingerprint: &str) -> Option<CloudListing>
pub fn cloud_listing(&self, id: &str, fingerprint: &str) -> Option<CloudListing>
The last listing of cloud source id, if it was taken at fingerprint.
Sourcepub fn save_cloud_listing(&self, id: &str, listing: CloudListing)
pub fn save_cloud_listing(&self, id: &str, listing: CloudListing)
Record one source’s listing, keeping the others.
Source IDs hidden from the home screen with Delete.
Sourcepub fn hide_cloud_source(&self, id: &str)
pub fn hide_cloud_source(&self, id: &str)
Hide a source from the home screen until the cache is cleared.
Whether Delete on its heading hid the bundled Example datasets (a user’s
examples.toml still shows).
Sourcepub fn hide_examples(&self)
pub fn hide_examples(&self)
Hide the bundled Example datasets until the cache is cleared.
Sourcepub fn load_remembered_places(&self) -> Vec<PathBuf>
pub fn load_remembered_places(&self) -> Vec<PathBuf>
The directories Ctrl+D kept here before 0.4.0 (now in catalog.toml), in added
order.
Sourcepub fn clear_remembered_places(&self)
pub fn clear_remembered_places(&self)
Drop the list Self::load_remembered_places reads, once it is moved.
Sourcepub fn save_remembered_places(&self, places: &[PathBuf]) -> Result<()>
pub fn save_remembered_places(&self, places: &[PathBuf]) -> Result<()>
Write places where Ctrl+D kept them before 0.4.0, for the migration’s tests.
Source§impl CacheManager
impl CacheManager
Sourcepub fn load_dataset_facts(&self) -> HashMap<PathBuf, DatasetFacts>
pub fn load_dataset_facts(&self) -> HashMap<PathBuf, DatasetFacts>
Every remembered dataset fact, not counted as use. Unreadable records are absent: failing to read a cache must never be worse than lacking it.
Sourcepub fn dataset_facts(&self, path: &Path) -> Option<DatasetFacts>
pub fn dataset_facts(&self, path: &Path) -> Option<DatasetFacts>
What datui knows about one dataset, counted as use.
Sourcepub fn touch_dataset_facts<'a>(&self, paths: impl IntoIterator<Item = &'a Path>)
pub fn touch_dataset_facts<'a>(&self, paths: impl IntoIterator<Item = &'a Path>)
Count these records as used (shown on home); least recently used go first past the budget.
Sourcepub fn record_dataset_facts(&self, facts: &[(PathBuf, DatasetFacts)])
pub fn record_dataset_facts(&self, facts: &[(PathBuf, DatasetFacts)])
Record newly measured datasets, one file each; non-UTF-8 paths are skipped.
Trait Implementations§
Source§impl Clone for CacheManager
impl Clone for CacheManager
Auto Trait Implementations§
impl Freeze for CacheManager
impl RefUnwindSafe for CacheManager
impl Send for CacheManager
impl Sync for CacheManager
impl Unpin for CacheManager
impl UnsafeUnpin for CacheManager
impl UnwindSafe for CacheManager
Blanket Implementations§
impl<T> Allocation for T
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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> Key for Twhere
T: Clone,
impl<T> Key for Twhere
T: Clone,
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