Skip to content

Commit 614bae7

Browse files
committed
refactor create_table/register_table
1 parent 483d5d5 commit 614bae7

1 file changed

Lines changed: 29 additions & 24 deletions

File tree

catalogs/iceberg-rest-catalog/src/catalog.rs

Lines changed: 29 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -336,26 +336,29 @@ impl Catalog for RestCatalog {
336336
identifier: Identifier,
337337
create_table: CreateTable,
338338
) -> Result<Table, Error> {
339-
catalog_api_api::create_table(
339+
let response = catalog_api_api::create_table(
340340
&self.configuration,
341341
self.name.as_deref(),
342342
&identifier.namespace().to_string(),
343343
create_table,
344344
None,
345345
)
346346
.map_err(Into::<Error>::into)
347-
.and_then(|response| {
348-
let clone = self.clone();
349-
async move {
350-
let object_store = clone
351-
.default_object_store_builder
347+
.await?;
348+
349+
let object_store = object_store_from_response(&response)?
350+
.ok_or(Error::NotFound("Object store credentials".to_string()))
351+
.or_else(|_| {
352+
self.default_object_store_builder
352353
.as_ref()
353-
.ok_or(Error::NotFound("Default object store".to_string()))?
354-
.build(Bucket::from_path(&response.metadata.location)?)?;
355-
Table::new(identifier.clone(), clone, object_store, response.metadata).await
356-
}
357-
})
358-
.await
354+
.ok_or(Error::NotFound("Default object store".to_string()))
355+
.and_then(|x| {
356+
let bucket = Bucket::from_path(&response.metadata.location)?;
357+
x.build(bucket)
358+
})
359+
})?;
360+
361+
Table::new(identifier.clone(), self, object_store, response.metadata).await
359362
}
360363
/// Update a table by atomically changing the pointer to the metadata file
361364
async fn update_table(
@@ -511,25 +514,27 @@ impl Catalog for RestCatalog {
511514
metadata_location.to_owned(),
512515
);
513516

514-
catalog_api_api::register_table(
517+
let response = catalog_api_api::register_table(
515518
&self.configuration,
516519
self.name.as_deref(),
517520
&identifier.namespace().to_string(),
518521
request,
519522
)
520523
.map_err(Into::<Error>::into)
521-
.and_then(|response| {
522-
let clone = self.clone();
523-
async move {
524-
let object_store = clone
525-
.default_object_store_builder
524+
.await?;
525+
let object_store = object_store_from_response(&response)?
526+
.ok_or(Error::NotFound("Object store credentials".to_string()))
527+
.or_else(|_| {
528+
self.default_object_store_builder
526529
.as_ref()
527-
.ok_or(Error::NotFound("Default object store".to_string()))?
528-
.build(Bucket::from_path(&response.metadata.location)?)?;
529-
Table::new(identifier.clone(), clone, object_store, response.metadata).await
530-
}
531-
})
532-
.await
530+
.ok_or(Error::NotFound("Default object store".to_string()))
531+
.and_then(|x| {
532+
let bucket = Bucket::from_path(&response.metadata.location)?;
533+
x.build(bucket)
534+
})
535+
})?;
536+
537+
Table::new(identifier.clone(), self, object_store, response.metadata).await
533538
}
534539
}
535540

0 commit comments

Comments
 (0)