40 public std::enable_shared_from_this<RestCatalog> {
52 std::string_view name()
const override;
54 Result<std::vector<Namespace>> ListNamespaces(
const Namespace& ns)
const override;
56 Status CreateNamespace(
58 const std::unordered_map<std::string, std::string>& properties)
override;
60 Result<std::unordered_map<std::string, std::string>> GetNamespaceProperties(
63 Status DropNamespace(
const Namespace& ns)
override;
65 Result<bool> NamespaceExists(
const Namespace& ns)
const override;
67 Status UpdateNamespaceProperties(
68 const Namespace& ns,
const std::unordered_map<std::string, std::string>& updates,
69 const std::unordered_set<std::string>& removals)
override;
71 Result<std::vector<TableIdentifier>> ListTables(
const Namespace& ns)
const override;
73 Result<std::shared_ptr<Table>> CreateTable(
74 const TableIdentifier& identifier,
const std::shared_ptr<Schema>& schema,
75 const std::shared_ptr<PartitionSpec>& spec,
const std::shared_ptr<SortOrder>& order,
76 const std::string& location,
77 const std::unordered_map<std::string, std::string>& properties)
override;
79 Result<std::shared_ptr<Table>> UpdateTable(
81 const std::vector<std::unique_ptr<TableRequirement>>& requirements,
82 const std::vector<std::unique_ptr<TableUpdate>>& updates)
override;
84 Result<std::shared_ptr<Transaction>> StageCreateTable(
85 const TableIdentifier& identifier,
const std::shared_ptr<Schema>& schema,
86 const std::shared_ptr<PartitionSpec>& spec,
const std::shared_ptr<SortOrder>& order,
87 const std::string& location,
88 const std::unordered_map<std::string, std::string>& properties)
override;
90 Result<bool> TableExists(
const TableIdentifier& identifier)
const override;
94 Status DropTable(
const TableIdentifier& identifier,
bool purge)
override;
96 Result<std::shared_ptr<Table>> LoadTable(
const TableIdentifier& identifier)
override;
98 Result<std::shared_ptr<Table>> RegisterTable(
100 const std::string& metadata_file_location)
override;
104 std::unique_ptr<HttpClient> client, std::unique_ptr<ResourcePaths> paths,
105 std::unordered_set<Endpoint> endpoints,
106 std::unique_ptr<auth::AuthManager> auth_manager,
107 std::shared_ptr<auth::AuthSession> catalog_session,
110 Result<std::string> LoadTableInternal(
const TableIdentifier& identifier)
const;
112 Result<LoadTableResult> CreateTableInternal(
113 const TableIdentifier& identifier,
const std::shared_ptr<Schema>& schema,
114 const std::shared_ptr<PartitionSpec>& spec,
const std::shared_ptr<SortOrder>& order,
115 const std::string& location,
116 const std::unordered_map<std::string, std::string>& properties,
bool stage_create);
119 std::shared_ptr<FileIO> file_io_;
120 std::unique_ptr<HttpClient> client_;
121 std::unique_ptr<ResourcePaths> paths_;
123 std::unordered_set<Endpoint> supported_endpoints_;
124 std::unique_ptr<auth::AuthManager> auth_manager_;
125 std::shared_ptr<auth::AuthSession> catalog_session_;