add file listing to database abstraction.

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk 2024-03-22 19:37:36 -07:00 committed by June
parent bdf3997de5
commit 6b1933914d
4 changed files with 29 additions and 0 deletions

View file

@ -34,6 +34,8 @@ pub(crate) trait KeyValueDatabaseEngine: Send + Sync {
fn backup(&self) -> Result<(), Box<dyn Error>> { unimplemented!() }
fn backup_list(&self) -> Result<String> { Ok(String::new()) }
fn file_list(&self) -> Result<String> { Ok(String::new()) }
}
pub(crate) trait KvTree: Send + Sync {

View file

@ -304,6 +304,30 @@ impl KeyValueDatabaseEngine for Arc<Engine> {
Ok(res)
}
fn file_list(&self) -> Result<String> {
match self.rocks.live_files() {
Err(e) => Ok(String::from(e)),
Ok(files) => {
let mut res = String::new();
for file in files {
let _ = std::fmt::write(
&mut res,
format_args!(
"<code>L{} {:<13} {:7}+ {:4}- {:9}</code> {}<br>",
file.level,
file.name,
file.num_entries,
file.num_deletions,
file.size,
file.column_family_name,
),
);
}
Ok(res)
},
}
}
// TODO: figure out if this is needed for rocksdb
#[allow(dead_code)]
fn clear_caches(&self) {}

View file

@ -286,4 +286,6 @@ lasttimelinecount_cache: {lasttimelinecount_cache}\n"
fn backup(&self) -> Result<(), Box<dyn std::error::Error>> { self.db.backup() }
fn backup_list(&self) -> Result<String> { self.db.backup_list() }
fn file_list(&self) -> Result<String> { self.db.file_list() }
}

View file

@ -37,4 +37,5 @@ pub trait Data: Send + Sync {
fn bump_database_version(&self, new_version: u64) -> Result<()>;
fn backup(&self) -> Result<(), Box<dyn Error>> { unimplemented!() }
fn backup_list(&self) -> Result<String> { Ok(String::new()) }
fn file_list(&self) -> Result<String> { Ok(String::new()) }
}