mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-01-07 13:52:59 +00:00
feat: add get table api
This commit is contained in:
4
Cargo.lock
generated
4
Cargo.lock
generated
@@ -11207,10 +11207,14 @@ dependencies = [
|
||||
name = "sst-convert"
|
||||
version = "0.13.0"
|
||||
dependencies = [
|
||||
"catalog",
|
||||
"common-meta",
|
||||
"meta-client",
|
||||
"mito2",
|
||||
"object-store",
|
||||
"snafu 0.8.5",
|
||||
"store-api",
|
||||
"table",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
||||
@@ -5,10 +5,14 @@ edition.workspace = true
|
||||
license.workspace = true
|
||||
|
||||
[dependencies]
|
||||
catalog.workspace = true
|
||||
common-meta.workspace = true
|
||||
meta-client.workspace = true
|
||||
mito2.workspace = true
|
||||
object-store.workspace = true
|
||||
snafu.workspace = true
|
||||
store-api.workspace = true
|
||||
table.workspace = true
|
||||
|
||||
[lints]
|
||||
workspace = true
|
||||
|
||||
@@ -13,3 +13,58 @@
|
||||
// limitations under the License.
|
||||
|
||||
//! Utilities to get table metadata.
|
||||
|
||||
use std::sync::Arc;
|
||||
|
||||
use catalog::kvbackend::MetaKvBackend;
|
||||
use common_meta::key::table_info::TableInfoValue;
|
||||
use common_meta::key::table_name::TableNameKey;
|
||||
use common_meta::key::{TableMetadataManager, TableMetadataManagerRef};
|
||||
use meta_client::{MetaClientOptions, MetaClientType};
|
||||
|
||||
pub struct TableMetadataHelper {
|
||||
table_metadata_manager: TableMetadataManagerRef,
|
||||
}
|
||||
|
||||
impl TableMetadataHelper {
|
||||
pub async fn new(meta_options: &MetaClientOptions) -> Self {
|
||||
let backend = build_kv_backend(meta_options).await;
|
||||
let table_metadata_manager = Arc::new(TableMetadataManager::new(Arc::new(backend)));
|
||||
Self {
|
||||
table_metadata_manager,
|
||||
}
|
||||
}
|
||||
|
||||
/// Get table info.
|
||||
pub async fn get_table(
|
||||
&self,
|
||||
catalog: &str,
|
||||
schema: &str,
|
||||
table: &str,
|
||||
) -> Option<TableInfoValue> {
|
||||
let table_name = TableNameKey::new(catalog, schema, table);
|
||||
let table_id = self
|
||||
.table_metadata_manager
|
||||
.table_name_manager()
|
||||
.get(table_name)
|
||||
.await
|
||||
.unwrap()
|
||||
.map(|v| v.table_id())
|
||||
.unwrap();
|
||||
|
||||
self.table_metadata_manager
|
||||
.table_info_manager()
|
||||
.get(table_id)
|
||||
.await
|
||||
.unwrap()
|
||||
.map(|v| v.into_inner())
|
||||
}
|
||||
}
|
||||
|
||||
async fn build_kv_backend(meta_options: &MetaClientOptions) -> MetaKvBackend {
|
||||
let meta_client = meta_client::create_meta_client(MetaClientType::Frontend, meta_options)
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
MetaKvBackend::new(meta_client)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user