lance_namespace_reqwest_client/apis/
table_api.rs

1/*
2 * Lance Namespace Specification
3 *
4 * This OpenAPI specification is a part of the Lance namespace specification. It contains 2 parts:  The `components/schemas`, `components/responses`, `components/examples`, `tags` sections define the request and response shape for each operation in a Lance Namespace across all implementations. See https://lancedb.github.io/lance-namespace/spec/operations for more details.  The `servers`, `security`, `paths`, `components/parameters` sections are for the  Lance REST Namespace implementation, which defines a complete REST server that can work with Lance datasets. See https://lancedb.github.io/lance-namespace/spec/impls/rest for more details. 
5 *
6 * The version of the OpenAPI document: 1.0.0
7 * 
8 * Generated by: https://openapi-generator.tech
9 */
10
11
12use reqwest;
13use serde::{Deserialize, Serialize, de::Error as _};
14use crate::{apis::ResponseContent, models};
15use super::{Error, configuration, ContentType};
16
17
18/// struct for typed errors of method [`alter_table_add_columns`]
19#[derive(Debug, Clone, Serialize, Deserialize)]
20#[serde(untagged)]
21pub enum AlterTableAddColumnsError {
22    Status400(models::ErrorResponse),
23    Status401(models::ErrorResponse),
24    Status403(models::ErrorResponse),
25    Status404(models::ErrorResponse),
26    Status503(models::ErrorResponse),
27    Status5XX(models::ErrorResponse),
28    UnknownValue(serde_json::Value),
29}
30
31/// struct for typed errors of method [`alter_table_alter_columns`]
32#[derive(Debug, Clone, Serialize, Deserialize)]
33#[serde(untagged)]
34pub enum AlterTableAlterColumnsError {
35    Status400(models::ErrorResponse),
36    Status401(models::ErrorResponse),
37    Status403(models::ErrorResponse),
38    Status404(models::ErrorResponse),
39    Status503(models::ErrorResponse),
40    Status5XX(models::ErrorResponse),
41    UnknownValue(serde_json::Value),
42}
43
44/// struct for typed errors of method [`alter_table_drop_columns`]
45#[derive(Debug, Clone, Serialize, Deserialize)]
46#[serde(untagged)]
47pub enum AlterTableDropColumnsError {
48    Status400(models::ErrorResponse),
49    Status401(models::ErrorResponse),
50    Status403(models::ErrorResponse),
51    Status404(models::ErrorResponse),
52    Status503(models::ErrorResponse),
53    Status5XX(models::ErrorResponse),
54    UnknownValue(serde_json::Value),
55}
56
57/// struct for typed errors of method [`analyze_table_query_plan`]
58#[derive(Debug, Clone, Serialize, Deserialize)]
59#[serde(untagged)]
60pub enum AnalyzeTableQueryPlanError {
61    Status400(models::ErrorResponse),
62    Status401(models::ErrorResponse),
63    Status403(models::ErrorResponse),
64    Status404(models::ErrorResponse),
65    Status503(models::ErrorResponse),
66    Status5XX(models::ErrorResponse),
67    UnknownValue(serde_json::Value),
68}
69
70/// struct for typed errors of method [`count_table_rows`]
71#[derive(Debug, Clone, Serialize, Deserialize)]
72#[serde(untagged)]
73pub enum CountTableRowsError {
74    Status400(models::ErrorResponse),
75    Status401(models::ErrorResponse),
76    Status403(models::ErrorResponse),
77    Status404(models::ErrorResponse),
78    Status503(models::ErrorResponse),
79    Status5XX(models::ErrorResponse),
80    UnknownValue(serde_json::Value),
81}
82
83/// struct for typed errors of method [`create_empty_table`]
84#[derive(Debug, Clone, Serialize, Deserialize)]
85#[serde(untagged)]
86pub enum CreateEmptyTableError {
87    Status400(models::ErrorResponse),
88    Status401(models::ErrorResponse),
89    Status403(models::ErrorResponse),
90    Status404(models::ErrorResponse),
91    Status409(models::ErrorResponse),
92    Status503(models::ErrorResponse),
93    Status5XX(models::ErrorResponse),
94    UnknownValue(serde_json::Value),
95}
96
97/// struct for typed errors of method [`create_table`]
98#[derive(Debug, Clone, Serialize, Deserialize)]
99#[serde(untagged)]
100pub enum CreateTableError {
101    Status400(models::ErrorResponse),
102    Status401(models::ErrorResponse),
103    Status403(models::ErrorResponse),
104    Status404(models::ErrorResponse),
105    Status503(models::ErrorResponse),
106    Status5XX(models::ErrorResponse),
107    UnknownValue(serde_json::Value),
108}
109
110/// struct for typed errors of method [`create_table_index`]
111#[derive(Debug, Clone, Serialize, Deserialize)]
112#[serde(untagged)]
113pub enum CreateTableIndexError {
114    Status400(models::ErrorResponse),
115    Status401(models::ErrorResponse),
116    Status403(models::ErrorResponse),
117    Status404(models::ErrorResponse),
118    Status503(models::ErrorResponse),
119    Status5XX(models::ErrorResponse),
120    UnknownValue(serde_json::Value),
121}
122
123/// struct for typed errors of method [`create_table_tag`]
124#[derive(Debug, Clone, Serialize, Deserialize)]
125#[serde(untagged)]
126pub enum CreateTableTagError {
127    Status400(models::ErrorResponse),
128    Status401(models::ErrorResponse),
129    Status403(models::ErrorResponse),
130    Status404(models::ErrorResponse),
131    Status409(models::ErrorResponse),
132    Status503(models::ErrorResponse),
133    Status5XX(models::ErrorResponse),
134    UnknownValue(serde_json::Value),
135}
136
137/// struct for typed errors of method [`delete_from_table`]
138#[derive(Debug, Clone, Serialize, Deserialize)]
139#[serde(untagged)]
140pub enum DeleteFromTableError {
141    Status400(models::ErrorResponse),
142    Status401(models::ErrorResponse),
143    Status403(models::ErrorResponse),
144    Status404(models::ErrorResponse),
145    Status503(models::ErrorResponse),
146    Status5XX(models::ErrorResponse),
147    UnknownValue(serde_json::Value),
148}
149
150/// struct for typed errors of method [`delete_table_tag`]
151#[derive(Debug, Clone, Serialize, Deserialize)]
152#[serde(untagged)]
153pub enum DeleteTableTagError {
154    Status400(models::ErrorResponse),
155    Status401(models::ErrorResponse),
156    Status403(models::ErrorResponse),
157    Status404(models::ErrorResponse),
158    Status503(models::ErrorResponse),
159    Status5XX(models::ErrorResponse),
160    UnknownValue(serde_json::Value),
161}
162
163/// struct for typed errors of method [`deregister_table`]
164#[derive(Debug, Clone, Serialize, Deserialize)]
165#[serde(untagged)]
166pub enum DeregisterTableError {
167    Status400(models::ErrorResponse),
168    Status401(models::ErrorResponse),
169    Status403(models::ErrorResponse),
170    Status404(models::ErrorResponse),
171    Status503(models::ErrorResponse),
172    Status5XX(models::ErrorResponse),
173    UnknownValue(serde_json::Value),
174}
175
176/// struct for typed errors of method [`describe_table`]
177#[derive(Debug, Clone, Serialize, Deserialize)]
178#[serde(untagged)]
179pub enum DescribeTableError {
180    Status400(models::ErrorResponse),
181    Status401(models::ErrorResponse),
182    Status403(models::ErrorResponse),
183    Status404(models::ErrorResponse),
184    Status503(models::ErrorResponse),
185    Status5XX(models::ErrorResponse),
186    UnknownValue(serde_json::Value),
187}
188
189/// struct for typed errors of method [`describe_table_index_stats`]
190#[derive(Debug, Clone, Serialize, Deserialize)]
191#[serde(untagged)]
192pub enum DescribeTableIndexStatsError {
193    Status400(models::ErrorResponse),
194    Status401(models::ErrorResponse),
195    Status403(models::ErrorResponse),
196    Status404(models::ErrorResponse),
197    Status503(models::ErrorResponse),
198    Status5XX(models::ErrorResponse),
199    UnknownValue(serde_json::Value),
200}
201
202/// struct for typed errors of method [`drop_table`]
203#[derive(Debug, Clone, Serialize, Deserialize)]
204#[serde(untagged)]
205pub enum DropTableError {
206    Status400(models::ErrorResponse),
207    Status401(models::ErrorResponse),
208    Status403(models::ErrorResponse),
209    Status404(models::ErrorResponse),
210    Status503(models::ErrorResponse),
211    Status5XX(models::ErrorResponse),
212    UnknownValue(serde_json::Value),
213}
214
215/// struct for typed errors of method [`drop_table_index`]
216#[derive(Debug, Clone, Serialize, Deserialize)]
217#[serde(untagged)]
218pub enum DropTableIndexError {
219    Status400(models::ErrorResponse),
220    Status401(models::ErrorResponse),
221    Status403(models::ErrorResponse),
222    Status404(models::ErrorResponse),
223    Status503(models::ErrorResponse),
224    Status5XX(models::ErrorResponse),
225    UnknownValue(serde_json::Value),
226}
227
228/// struct for typed errors of method [`explain_table_query_plan`]
229#[derive(Debug, Clone, Serialize, Deserialize)]
230#[serde(untagged)]
231pub enum ExplainTableQueryPlanError {
232    Status400(models::ErrorResponse),
233    Status401(models::ErrorResponse),
234    Status403(models::ErrorResponse),
235    Status404(models::ErrorResponse),
236    Status503(models::ErrorResponse),
237    Status5XX(models::ErrorResponse),
238    UnknownValue(serde_json::Value),
239}
240
241/// struct for typed errors of method [`get_table_stats`]
242#[derive(Debug, Clone, Serialize, Deserialize)]
243#[serde(untagged)]
244pub enum GetTableStatsError {
245    Status400(models::ErrorResponse),
246    Status401(models::ErrorResponse),
247    Status403(models::ErrorResponse),
248    Status404(models::ErrorResponse),
249    Status503(models::ErrorResponse),
250    Status5XX(models::ErrorResponse),
251    UnknownValue(serde_json::Value),
252}
253
254/// struct for typed errors of method [`get_table_tag_version`]
255#[derive(Debug, Clone, Serialize, Deserialize)]
256#[serde(untagged)]
257pub enum GetTableTagVersionError {
258    Status400(models::ErrorResponse),
259    Status401(models::ErrorResponse),
260    Status403(models::ErrorResponse),
261    Status404(models::ErrorResponse),
262    Status503(models::ErrorResponse),
263    Status5XX(models::ErrorResponse),
264    UnknownValue(serde_json::Value),
265}
266
267/// struct for typed errors of method [`insert_into_table`]
268#[derive(Debug, Clone, Serialize, Deserialize)]
269#[serde(untagged)]
270pub enum InsertIntoTableError {
271    Status400(models::ErrorResponse),
272    Status401(models::ErrorResponse),
273    Status403(models::ErrorResponse),
274    Status404(models::ErrorResponse),
275    Status503(models::ErrorResponse),
276    Status5XX(models::ErrorResponse),
277    UnknownValue(serde_json::Value),
278}
279
280/// struct for typed errors of method [`list_table_indices`]
281#[derive(Debug, Clone, Serialize, Deserialize)]
282#[serde(untagged)]
283pub enum ListTableIndicesError {
284    Status400(models::ErrorResponse),
285    Status401(models::ErrorResponse),
286    Status403(models::ErrorResponse),
287    Status404(models::ErrorResponse),
288    Status503(models::ErrorResponse),
289    Status5XX(models::ErrorResponse),
290    UnknownValue(serde_json::Value),
291}
292
293/// struct for typed errors of method [`list_table_tags`]
294#[derive(Debug, Clone, Serialize, Deserialize)]
295#[serde(untagged)]
296pub enum ListTableTagsError {
297    Status400(models::ErrorResponse),
298    Status401(models::ErrorResponse),
299    Status403(models::ErrorResponse),
300    Status404(models::ErrorResponse),
301    Status503(models::ErrorResponse),
302    Status5XX(models::ErrorResponse),
303    UnknownValue(serde_json::Value),
304}
305
306/// struct for typed errors of method [`list_table_versions`]
307#[derive(Debug, Clone, Serialize, Deserialize)]
308#[serde(untagged)]
309pub enum ListTableVersionsError {
310    Status400(models::ErrorResponse),
311    Status401(models::ErrorResponse),
312    Status403(models::ErrorResponse),
313    Status404(models::ErrorResponse),
314    Status503(models::ErrorResponse),
315    Status5XX(models::ErrorResponse),
316    UnknownValue(serde_json::Value),
317}
318
319/// struct for typed errors of method [`list_tables`]
320#[derive(Debug, Clone, Serialize, Deserialize)]
321#[serde(untagged)]
322pub enum ListTablesError {
323    Status400(models::ErrorResponse),
324    Status401(models::ErrorResponse),
325    Status403(models::ErrorResponse),
326    Status404(models::ErrorResponse),
327    Status406(models::ErrorResponse),
328    Status503(models::ErrorResponse),
329    Status5XX(models::ErrorResponse),
330    UnknownValue(serde_json::Value),
331}
332
333/// struct for typed errors of method [`merge_insert_into_table`]
334#[derive(Debug, Clone, Serialize, Deserialize)]
335#[serde(untagged)]
336pub enum MergeInsertIntoTableError {
337    Status400(models::ErrorResponse),
338    Status401(models::ErrorResponse),
339    Status403(models::ErrorResponse),
340    Status404(models::ErrorResponse),
341    Status503(models::ErrorResponse),
342    Status5XX(models::ErrorResponse),
343    UnknownValue(serde_json::Value),
344}
345
346/// struct for typed errors of method [`query_table`]
347#[derive(Debug, Clone, Serialize, Deserialize)]
348#[serde(untagged)]
349pub enum QueryTableError {
350    Status400(models::ErrorResponse),
351    Status401(models::ErrorResponse),
352    Status403(models::ErrorResponse),
353    Status404(models::ErrorResponse),
354    Status503(models::ErrorResponse),
355    Status5XX(models::ErrorResponse),
356    UnknownValue(serde_json::Value),
357}
358
359/// struct for typed errors of method [`register_table`]
360#[derive(Debug, Clone, Serialize, Deserialize)]
361#[serde(untagged)]
362pub enum RegisterTableError {
363    Status400(models::ErrorResponse),
364    Status401(models::ErrorResponse),
365    Status403(models::ErrorResponse),
366    Status404(models::ErrorResponse),
367    Status406(models::ErrorResponse),
368    Status409(models::ErrorResponse),
369    Status503(models::ErrorResponse),
370    Status5XX(models::ErrorResponse),
371    UnknownValue(serde_json::Value),
372}
373
374/// struct for typed errors of method [`restore_table`]
375#[derive(Debug, Clone, Serialize, Deserialize)]
376#[serde(untagged)]
377pub enum RestoreTableError {
378    Status400(models::ErrorResponse),
379    Status401(models::ErrorResponse),
380    Status403(models::ErrorResponse),
381    Status404(models::ErrorResponse),
382    Status503(models::ErrorResponse),
383    Status5XX(models::ErrorResponse),
384    UnknownValue(serde_json::Value),
385}
386
387/// struct for typed errors of method [`table_exists`]
388#[derive(Debug, Clone, Serialize, Deserialize)]
389#[serde(untagged)]
390pub enum TableExistsError {
391    Status400(models::ErrorResponse),
392    Status401(models::ErrorResponse),
393    Status403(models::ErrorResponse),
394    Status404(models::ErrorResponse),
395    Status503(models::ErrorResponse),
396    Status5XX(models::ErrorResponse),
397    UnknownValue(serde_json::Value),
398}
399
400/// struct for typed errors of method [`update_table`]
401#[derive(Debug, Clone, Serialize, Deserialize)]
402#[serde(untagged)]
403pub enum UpdateTableError {
404    Status400(models::ErrorResponse),
405    Status401(models::ErrorResponse),
406    Status403(models::ErrorResponse),
407    Status404(models::ErrorResponse),
408    Status503(models::ErrorResponse),
409    Status5XX(models::ErrorResponse),
410    UnknownValue(serde_json::Value),
411}
412
413/// struct for typed errors of method [`update_table_tag`]
414#[derive(Debug, Clone, Serialize, Deserialize)]
415#[serde(untagged)]
416pub enum UpdateTableTagError {
417    Status400(models::ErrorResponse),
418    Status401(models::ErrorResponse),
419    Status403(models::ErrorResponse),
420    Status404(models::ErrorResponse),
421    Status503(models::ErrorResponse),
422    Status5XX(models::ErrorResponse),
423    UnknownValue(serde_json::Value),
424}
425
426
427/// Add new columns to table `id` using SQL expressions or default values. 
428pub async fn alter_table_add_columns(configuration: &configuration::Configuration, id: &str, alter_table_add_columns_request: models::AlterTableAddColumnsRequest, delimiter: Option<&str>) -> Result<models::AlterTableAddColumnsResponse, Error<AlterTableAddColumnsError>> {
429    // add a prefix to parameters to efficiently prevent name collisions
430    let p_id = id;
431    let p_alter_table_add_columns_request = alter_table_add_columns_request;
432    let p_delimiter = delimiter;
433
434    let uri_str = format!("{}/v1/table/{id}/add_columns", configuration.base_path, id=crate::apis::urlencode(p_id));
435    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
436
437    if let Some(ref param_value) = p_delimiter {
438        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
439    }
440    if let Some(ref user_agent) = configuration.user_agent {
441        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
442    }
443    req_builder = req_builder.json(&p_alter_table_add_columns_request);
444
445    let req = req_builder.build()?;
446    let resp = configuration.client.execute(req).await?;
447
448    let status = resp.status();
449    let content_type = resp
450        .headers()
451        .get("content-type")
452        .and_then(|v| v.to_str().ok())
453        .unwrap_or("application/octet-stream");
454    let content_type = super::ContentType::from(content_type);
455
456    if !status.is_client_error() && !status.is_server_error() {
457        let content = resp.text().await?;
458        match content_type {
459            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
460            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::AlterTableAddColumnsResponse`"))),
461            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::AlterTableAddColumnsResponse`")))),
462        }
463    } else {
464        let content = resp.text().await?;
465        let entity: Option<AlterTableAddColumnsError> = serde_json::from_str(&content).ok();
466        Err(Error::ResponseError(ResponseContent { status, content, entity }))
467    }
468}
469
470/// Modify existing columns in table `id`, such as renaming or changing data types. 
471pub async fn alter_table_alter_columns(configuration: &configuration::Configuration, id: &str, alter_table_alter_columns_request: models::AlterTableAlterColumnsRequest, delimiter: Option<&str>) -> Result<models::AlterTableAlterColumnsResponse, Error<AlterTableAlterColumnsError>> {
472    // add a prefix to parameters to efficiently prevent name collisions
473    let p_id = id;
474    let p_alter_table_alter_columns_request = alter_table_alter_columns_request;
475    let p_delimiter = delimiter;
476
477    let uri_str = format!("{}/v1/table/{id}/alter_columns", configuration.base_path, id=crate::apis::urlencode(p_id));
478    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
479
480    if let Some(ref param_value) = p_delimiter {
481        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
482    }
483    if let Some(ref user_agent) = configuration.user_agent {
484        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
485    }
486    req_builder = req_builder.json(&p_alter_table_alter_columns_request);
487
488    let req = req_builder.build()?;
489    let resp = configuration.client.execute(req).await?;
490
491    let status = resp.status();
492    let content_type = resp
493        .headers()
494        .get("content-type")
495        .and_then(|v| v.to_str().ok())
496        .unwrap_or("application/octet-stream");
497    let content_type = super::ContentType::from(content_type);
498
499    if !status.is_client_error() && !status.is_server_error() {
500        let content = resp.text().await?;
501        match content_type {
502            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
503            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::AlterTableAlterColumnsResponse`"))),
504            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::AlterTableAlterColumnsResponse`")))),
505        }
506    } else {
507        let content = resp.text().await?;
508        let entity: Option<AlterTableAlterColumnsError> = serde_json::from_str(&content).ok();
509        Err(Error::ResponseError(ResponseContent { status, content, entity }))
510    }
511}
512
513/// Remove specified columns from table `id`. 
514pub async fn alter_table_drop_columns(configuration: &configuration::Configuration, id: &str, alter_table_drop_columns_request: models::AlterTableDropColumnsRequest, delimiter: Option<&str>) -> Result<models::AlterTableDropColumnsResponse, Error<AlterTableDropColumnsError>> {
515    // add a prefix to parameters to efficiently prevent name collisions
516    let p_id = id;
517    let p_alter_table_drop_columns_request = alter_table_drop_columns_request;
518    let p_delimiter = delimiter;
519
520    let uri_str = format!("{}/v1/table/{id}/drop_columns", configuration.base_path, id=crate::apis::urlencode(p_id));
521    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
522
523    if let Some(ref param_value) = p_delimiter {
524        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
525    }
526    if let Some(ref user_agent) = configuration.user_agent {
527        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
528    }
529    req_builder = req_builder.json(&p_alter_table_drop_columns_request);
530
531    let req = req_builder.build()?;
532    let resp = configuration.client.execute(req).await?;
533
534    let status = resp.status();
535    let content_type = resp
536        .headers()
537        .get("content-type")
538        .and_then(|v| v.to_str().ok())
539        .unwrap_or("application/octet-stream");
540    let content_type = super::ContentType::from(content_type);
541
542    if !status.is_client_error() && !status.is_server_error() {
543        let content = resp.text().await?;
544        match content_type {
545            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
546            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::AlterTableDropColumnsResponse`"))),
547            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::AlterTableDropColumnsResponse`")))),
548        }
549    } else {
550        let content = resp.text().await?;
551        let entity: Option<AlterTableDropColumnsError> = serde_json::from_str(&content).ok();
552        Err(Error::ResponseError(ResponseContent { status, content, entity }))
553    }
554}
555
556/// Analyze the query execution plan for a query against table `id`. Returns detailed statistics and analysis of the query execution plan. 
557pub async fn analyze_table_query_plan(configuration: &configuration::Configuration, id: &str, analyze_table_query_plan_request: models::AnalyzeTableQueryPlanRequest, delimiter: Option<&str>) -> Result<models::AnalyzeTableQueryPlanResponse, Error<AnalyzeTableQueryPlanError>> {
558    // add a prefix to parameters to efficiently prevent name collisions
559    let p_id = id;
560    let p_analyze_table_query_plan_request = analyze_table_query_plan_request;
561    let p_delimiter = delimiter;
562
563    let uri_str = format!("{}/v1/table/{id}/analyze_plan", configuration.base_path, id=crate::apis::urlencode(p_id));
564    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
565
566    if let Some(ref param_value) = p_delimiter {
567        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
568    }
569    if let Some(ref user_agent) = configuration.user_agent {
570        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
571    }
572    req_builder = req_builder.json(&p_analyze_table_query_plan_request);
573
574    let req = req_builder.build()?;
575    let resp = configuration.client.execute(req).await?;
576
577    let status = resp.status();
578    let content_type = resp
579        .headers()
580        .get("content-type")
581        .and_then(|v| v.to_str().ok())
582        .unwrap_or("application/octet-stream");
583    let content_type = super::ContentType::from(content_type);
584
585    if !status.is_client_error() && !status.is_server_error() {
586        let content = resp.text().await?;
587        match content_type {
588            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
589            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::AnalyzeTableQueryPlanResponse`"))),
590            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::AnalyzeTableQueryPlanResponse`")))),
591        }
592    } else {
593        let content = resp.text().await?;
594        let entity: Option<AnalyzeTableQueryPlanError> = serde_json::from_str(&content).ok();
595        Err(Error::ResponseError(ResponseContent { status, content, entity }))
596    }
597}
598
599/// Count the number of rows in table `id` 
600pub async fn count_table_rows(configuration: &configuration::Configuration, id: &str, count_table_rows_request: models::CountTableRowsRequest, delimiter: Option<&str>) -> Result<i64, Error<CountTableRowsError>> {
601    // add a prefix to parameters to efficiently prevent name collisions
602    let p_id = id;
603    let p_count_table_rows_request = count_table_rows_request;
604    let p_delimiter = delimiter;
605
606    let uri_str = format!("{}/v1/table/{id}/count_rows", configuration.base_path, id=crate::apis::urlencode(p_id));
607    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
608
609    if let Some(ref param_value) = p_delimiter {
610        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
611    }
612    if let Some(ref user_agent) = configuration.user_agent {
613        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
614    }
615    req_builder = req_builder.json(&p_count_table_rows_request);
616
617    let req = req_builder.build()?;
618    let resp = configuration.client.execute(req).await?;
619
620    let status = resp.status();
621    let content_type = resp
622        .headers()
623        .get("content-type")
624        .and_then(|v| v.to_str().ok())
625        .unwrap_or("application/octet-stream");
626    let content_type = super::ContentType::from(content_type);
627
628    if !status.is_client_error() && !status.is_server_error() {
629        let content = resp.text().await?;
630        match content_type {
631            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
632            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `i64`"))),
633            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `i64`")))),
634        }
635    } else {
636        let content = resp.text().await?;
637        let entity: Option<CountTableRowsError> = serde_json::from_str(&content).ok();
638        Err(Error::ResponseError(ResponseContent { status, content, entity }))
639    }
640}
641
642/// Create an empty table with the given name without touching storage. This is a metadata-only operation that records the table existence and sets up aspects like access control.  For DirectoryNamespace implementation, this creates a `.lance-reserved` file in the table directory to mark the table's existence without creating actual Lance data files. 
643pub async fn create_empty_table(configuration: &configuration::Configuration, id: &str, create_empty_table_request: models::CreateEmptyTableRequest, delimiter: Option<&str>) -> Result<models::CreateEmptyTableResponse, Error<CreateEmptyTableError>> {
644    // add a prefix to parameters to efficiently prevent name collisions
645    let p_id = id;
646    let p_create_empty_table_request = create_empty_table_request;
647    let p_delimiter = delimiter;
648
649    let uri_str = format!("{}/v1/table/{id}/create-empty", configuration.base_path, id=crate::apis::urlencode(p_id));
650    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
651
652    if let Some(ref param_value) = p_delimiter {
653        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
654    }
655    if let Some(ref user_agent) = configuration.user_agent {
656        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
657    }
658    req_builder = req_builder.json(&p_create_empty_table_request);
659
660    let req = req_builder.build()?;
661    let resp = configuration.client.execute(req).await?;
662
663    let status = resp.status();
664    let content_type = resp
665        .headers()
666        .get("content-type")
667        .and_then(|v| v.to_str().ok())
668        .unwrap_or("application/octet-stream");
669    let content_type = super::ContentType::from(content_type);
670
671    if !status.is_client_error() && !status.is_server_error() {
672        let content = resp.text().await?;
673        match content_type {
674            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
675            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::CreateEmptyTableResponse`"))),
676            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::CreateEmptyTableResponse`")))),
677        }
678    } else {
679        let content = resp.text().await?;
680        let entity: Option<CreateEmptyTableError> = serde_json::from_str(&content).ok();
681        Err(Error::ResponseError(ResponseContent { status, content, entity }))
682    }
683}
684
685/// Create table `id` in the namespace with the given data in Arrow IPC stream.  The schema of the Arrow IPC stream is used as the table schema.     If the stream is empty, the API creates a new empty table.  REST NAMESPACE ONLY REST namespace uses Arrow IPC stream as the request body. It passes in the `CreateTableRequest` information in the following way: - `id`: pass through path parameter of the same name - `mode`: pass through query parameter of the same name - `location`: pass through header `x-lance-table-location` - `properties`: pass through header `x-lance-table-properties` 
686pub async fn create_table(configuration: &configuration::Configuration, id: &str, body: Vec<u8>, delimiter: Option<&str>, mode: Option<&str>, x_lance_table_location: Option<&str>, x_lance_table_properties: Option<&str>) -> Result<models::CreateTableResponse, Error<CreateTableError>> {
687    // add a prefix to parameters to efficiently prevent name collisions
688    let p_id = id;
689    let p_body = body;
690    let p_delimiter = delimiter;
691    let p_mode = mode;
692    let p_x_lance_table_location = x_lance_table_location;
693    let p_x_lance_table_properties = x_lance_table_properties;
694
695    let uri_str = format!("{}/v1/table/{id}/create", configuration.base_path, id=crate::apis::urlencode(p_id));
696    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
697
698    if let Some(ref param_value) = p_delimiter {
699        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
700    }
701    if let Some(ref param_value) = p_mode {
702        req_builder = req_builder.query(&[("mode", &param_value.to_string())]);
703    }
704    if let Some(ref user_agent) = configuration.user_agent {
705        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
706    }
707    if let Some(param_value) = p_x_lance_table_location {
708        req_builder = req_builder.header("x-lance-table-location", param_value.to_string());
709    }
710    if let Some(param_value) = p_x_lance_table_properties {
711        req_builder = req_builder.header("x-lance-table-properties", param_value.to_string());
712    }
713    req_builder = req_builder.body(p_body);
714
715    let req = req_builder.build()?;
716    let resp = configuration.client.execute(req).await?;
717
718    let status = resp.status();
719    let content_type = resp
720        .headers()
721        .get("content-type")
722        .and_then(|v| v.to_str().ok())
723        .unwrap_or("application/octet-stream");
724    let content_type = super::ContentType::from(content_type);
725
726    if !status.is_client_error() && !status.is_server_error() {
727        let content = resp.text().await?;
728        match content_type {
729            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
730            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::CreateTableResponse`"))),
731            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::CreateTableResponse`")))),
732        }
733    } else {
734        let content = resp.text().await?;
735        let entity: Option<CreateTableError> = serde_json::from_str(&content).ok();
736        Err(Error::ResponseError(ResponseContent { status, content, entity }))
737    }
738}
739
740/// Create an index on a table column for faster search operations. Supports vector indexes (IVF_FLAT, IVF_HNSW_SQ, IVF_PQ, etc.) and scalar indexes (BTREE, BITMAP, FTS, etc.). Index creation is handled asynchronously.  Use the `ListTableIndices` and `DescribeTableIndexStats` operations to monitor index creation progress. 
741pub async fn create_table_index(configuration: &configuration::Configuration, id: &str, create_table_index_request: models::CreateTableIndexRequest, delimiter: Option<&str>) -> Result<models::CreateTableIndexResponse, Error<CreateTableIndexError>> {
742    // add a prefix to parameters to efficiently prevent name collisions
743    let p_id = id;
744    let p_create_table_index_request = create_table_index_request;
745    let p_delimiter = delimiter;
746
747    let uri_str = format!("{}/v1/table/{id}/create_index", configuration.base_path, id=crate::apis::urlencode(p_id));
748    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
749
750    if let Some(ref param_value) = p_delimiter {
751        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
752    }
753    if let Some(ref user_agent) = configuration.user_agent {
754        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
755    }
756    req_builder = req_builder.json(&p_create_table_index_request);
757
758    let req = req_builder.build()?;
759    let resp = configuration.client.execute(req).await?;
760
761    let status = resp.status();
762    let content_type = resp
763        .headers()
764        .get("content-type")
765        .and_then(|v| v.to_str().ok())
766        .unwrap_or("application/octet-stream");
767    let content_type = super::ContentType::from(content_type);
768
769    if !status.is_client_error() && !status.is_server_error() {
770        let content = resp.text().await?;
771        match content_type {
772            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
773            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::CreateTableIndexResponse`"))),
774            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::CreateTableIndexResponse`")))),
775        }
776    } else {
777        let content = resp.text().await?;
778        let entity: Option<CreateTableIndexError> = serde_json::from_str(&content).ok();
779        Err(Error::ResponseError(ResponseContent { status, content, entity }))
780    }
781}
782
783/// Create a new tag for table `id` that points to a specific version. 
784pub async fn create_table_tag(configuration: &configuration::Configuration, id: &str, create_table_tag_request: models::CreateTableTagRequest, delimiter: Option<&str>) -> Result<(), Error<CreateTableTagError>> {
785    // add a prefix to parameters to efficiently prevent name collisions
786    let p_id = id;
787    let p_create_table_tag_request = create_table_tag_request;
788    let p_delimiter = delimiter;
789
790    let uri_str = format!("{}/v1/table/{id}/tags/create", configuration.base_path, id=crate::apis::urlencode(p_id));
791    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
792
793    if let Some(ref param_value) = p_delimiter {
794        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
795    }
796    if let Some(ref user_agent) = configuration.user_agent {
797        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
798    }
799    req_builder = req_builder.json(&p_create_table_tag_request);
800
801    let req = req_builder.build()?;
802    let resp = configuration.client.execute(req).await?;
803
804    let status = resp.status();
805
806    if !status.is_client_error() && !status.is_server_error() {
807        Ok(())
808    } else {
809        let content = resp.text().await?;
810        let entity: Option<CreateTableTagError> = serde_json::from_str(&content).ok();
811        Err(Error::ResponseError(ResponseContent { status, content, entity }))
812    }
813}
814
815/// Delete rows from table `id`. 
816pub async fn delete_from_table(configuration: &configuration::Configuration, id: &str, delete_from_table_request: models::DeleteFromTableRequest, delimiter: Option<&str>) -> Result<models::DeleteFromTableResponse, Error<DeleteFromTableError>> {
817    // add a prefix to parameters to efficiently prevent name collisions
818    let p_id = id;
819    let p_delete_from_table_request = delete_from_table_request;
820    let p_delimiter = delimiter;
821
822    let uri_str = format!("{}/v1/table/{id}/delete", configuration.base_path, id=crate::apis::urlencode(p_id));
823    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
824
825    if let Some(ref param_value) = p_delimiter {
826        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
827    }
828    if let Some(ref user_agent) = configuration.user_agent {
829        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
830    }
831    req_builder = req_builder.json(&p_delete_from_table_request);
832
833    let req = req_builder.build()?;
834    let resp = configuration.client.execute(req).await?;
835
836    let status = resp.status();
837    let content_type = resp
838        .headers()
839        .get("content-type")
840        .and_then(|v| v.to_str().ok())
841        .unwrap_or("application/octet-stream");
842    let content_type = super::ContentType::from(content_type);
843
844    if !status.is_client_error() && !status.is_server_error() {
845        let content = resp.text().await?;
846        match content_type {
847            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
848            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::DeleteFromTableResponse`"))),
849            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::DeleteFromTableResponse`")))),
850        }
851    } else {
852        let content = resp.text().await?;
853        let entity: Option<DeleteFromTableError> = serde_json::from_str(&content).ok();
854        Err(Error::ResponseError(ResponseContent { status, content, entity }))
855    }
856}
857
858/// Delete an existing tag from table `id`. 
859pub async fn delete_table_tag(configuration: &configuration::Configuration, id: &str, delete_table_tag_request: models::DeleteTableTagRequest, delimiter: Option<&str>) -> Result<(), Error<DeleteTableTagError>> {
860    // add a prefix to parameters to efficiently prevent name collisions
861    let p_id = id;
862    let p_delete_table_tag_request = delete_table_tag_request;
863    let p_delimiter = delimiter;
864
865    let uri_str = format!("{}/v1/table/{id}/tags/delete", configuration.base_path, id=crate::apis::urlencode(p_id));
866    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
867
868    if let Some(ref param_value) = p_delimiter {
869        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
870    }
871    if let Some(ref user_agent) = configuration.user_agent {
872        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
873    }
874    req_builder = req_builder.json(&p_delete_table_tag_request);
875
876    let req = req_builder.build()?;
877    let resp = configuration.client.execute(req).await?;
878
879    let status = resp.status();
880
881    if !status.is_client_error() && !status.is_server_error() {
882        Ok(())
883    } else {
884        let content = resp.text().await?;
885        let entity: Option<DeleteTableTagError> = serde_json::from_str(&content).ok();
886        Err(Error::ResponseError(ResponseContent { status, content, entity }))
887    }
888}
889
890/// Deregister table `id` from its namespace. 
891pub async fn deregister_table(configuration: &configuration::Configuration, id: &str, deregister_table_request: models::DeregisterTableRequest, delimiter: Option<&str>) -> Result<models::DeregisterTableResponse, Error<DeregisterTableError>> {
892    // add a prefix to parameters to efficiently prevent name collisions
893    let p_id = id;
894    let p_deregister_table_request = deregister_table_request;
895    let p_delimiter = delimiter;
896
897    let uri_str = format!("{}/v1/table/{id}/deregister", configuration.base_path, id=crate::apis::urlencode(p_id));
898    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
899
900    if let Some(ref param_value) = p_delimiter {
901        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
902    }
903    if let Some(ref user_agent) = configuration.user_agent {
904        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
905    }
906    req_builder = req_builder.json(&p_deregister_table_request);
907
908    let req = req_builder.build()?;
909    let resp = configuration.client.execute(req).await?;
910
911    let status = resp.status();
912    let content_type = resp
913        .headers()
914        .get("content-type")
915        .and_then(|v| v.to_str().ok())
916        .unwrap_or("application/octet-stream");
917    let content_type = super::ContentType::from(content_type);
918
919    if !status.is_client_error() && !status.is_server_error() {
920        let content = resp.text().await?;
921        match content_type {
922            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
923            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::DeregisterTableResponse`"))),
924            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::DeregisterTableResponse`")))),
925        }
926    } else {
927        let content = resp.text().await?;
928        let entity: Option<DeregisterTableError> = serde_json::from_str(&content).ok();
929        Err(Error::ResponseError(ResponseContent { status, content, entity }))
930    }
931}
932
933/// Describe the detailed information for table `id`. 
934pub async fn describe_table(configuration: &configuration::Configuration, id: &str, describe_table_request: models::DescribeTableRequest, delimiter: Option<&str>) -> Result<models::DescribeTableResponse, Error<DescribeTableError>> {
935    // add a prefix to parameters to efficiently prevent name collisions
936    let p_id = id;
937    let p_describe_table_request = describe_table_request;
938    let p_delimiter = delimiter;
939
940    let uri_str = format!("{}/v1/table/{id}/describe", configuration.base_path, id=crate::apis::urlencode(p_id));
941    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
942
943    if let Some(ref param_value) = p_delimiter {
944        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
945    }
946    if let Some(ref user_agent) = configuration.user_agent {
947        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
948    }
949    req_builder = req_builder.json(&p_describe_table_request);
950
951    let req = req_builder.build()?;
952    let resp = configuration.client.execute(req).await?;
953
954    let status = resp.status();
955    let content_type = resp
956        .headers()
957        .get("content-type")
958        .and_then(|v| v.to_str().ok())
959        .unwrap_or("application/octet-stream");
960    let content_type = super::ContentType::from(content_type);
961
962    if !status.is_client_error() && !status.is_server_error() {
963        let content = resp.text().await?;
964        match content_type {
965            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
966            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::DescribeTableResponse`"))),
967            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::DescribeTableResponse`")))),
968        }
969    } else {
970        let content = resp.text().await?;
971        let entity: Option<DescribeTableError> = serde_json::from_str(&content).ok();
972        Err(Error::ResponseError(ResponseContent { status, content, entity }))
973    }
974}
975
976/// Get statistics for a specific index on a table. Returns information about the index type, distance type (for vector indices), and row counts. 
977pub async fn describe_table_index_stats(configuration: &configuration::Configuration, id: &str, index_name: &str, describe_table_index_stats_request: models::DescribeTableIndexStatsRequest, delimiter: Option<&str>) -> Result<models::DescribeTableIndexStatsResponse, Error<DescribeTableIndexStatsError>> {
978    // add a prefix to parameters to efficiently prevent name collisions
979    let p_id = id;
980    let p_index_name = index_name;
981    let p_describe_table_index_stats_request = describe_table_index_stats_request;
982    let p_delimiter = delimiter;
983
984    let uri_str = format!("{}/v1/table/{id}/index/{index_name}/stats", configuration.base_path, id=crate::apis::urlencode(p_id), index_name=crate::apis::urlencode(p_index_name));
985    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
986
987    if let Some(ref param_value) = p_delimiter {
988        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
989    }
990    if let Some(ref user_agent) = configuration.user_agent {
991        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
992    }
993    req_builder = req_builder.json(&p_describe_table_index_stats_request);
994
995    let req = req_builder.build()?;
996    let resp = configuration.client.execute(req).await?;
997
998    let status = resp.status();
999    let content_type = resp
1000        .headers()
1001        .get("content-type")
1002        .and_then(|v| v.to_str().ok())
1003        .unwrap_or("application/octet-stream");
1004    let content_type = super::ContentType::from(content_type);
1005
1006    if !status.is_client_error() && !status.is_server_error() {
1007        let content = resp.text().await?;
1008        match content_type {
1009            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1010            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::DescribeTableIndexStatsResponse`"))),
1011            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::DescribeTableIndexStatsResponse`")))),
1012        }
1013    } else {
1014        let content = resp.text().await?;
1015        let entity: Option<DescribeTableIndexStatsError> = serde_json::from_str(&content).ok();
1016        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1017    }
1018}
1019
1020/// Drop table `id` and delete its data. 
1021pub async fn drop_table(configuration: &configuration::Configuration, id: &str, drop_table_request: models::DropTableRequest, delimiter: Option<&str>) -> Result<models::DropTableResponse, Error<DropTableError>> {
1022    // add a prefix to parameters to efficiently prevent name collisions
1023    let p_id = id;
1024    let p_drop_table_request = drop_table_request;
1025    let p_delimiter = delimiter;
1026
1027    let uri_str = format!("{}/v1/table/{id}/drop", configuration.base_path, id=crate::apis::urlencode(p_id));
1028    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1029
1030    if let Some(ref param_value) = p_delimiter {
1031        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1032    }
1033    if let Some(ref user_agent) = configuration.user_agent {
1034        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1035    }
1036    req_builder = req_builder.json(&p_drop_table_request);
1037
1038    let req = req_builder.build()?;
1039    let resp = configuration.client.execute(req).await?;
1040
1041    let status = resp.status();
1042    let content_type = resp
1043        .headers()
1044        .get("content-type")
1045        .and_then(|v| v.to_str().ok())
1046        .unwrap_or("application/octet-stream");
1047    let content_type = super::ContentType::from(content_type);
1048
1049    if !status.is_client_error() && !status.is_server_error() {
1050        let content = resp.text().await?;
1051        match content_type {
1052            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1053            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::DropTableResponse`"))),
1054            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::DropTableResponse`")))),
1055        }
1056    } else {
1057        let content = resp.text().await?;
1058        let entity: Option<DropTableError> = serde_json::from_str(&content).ok();
1059        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1060    }
1061}
1062
1063/// Drop the specified index from table `id`. 
1064pub async fn drop_table_index(configuration: &configuration::Configuration, id: &str, index_name: &str, drop_table_index_request: models::DropTableIndexRequest, delimiter: Option<&str>) -> Result<models::DropTableIndexResponse, Error<DropTableIndexError>> {
1065    // add a prefix to parameters to efficiently prevent name collisions
1066    let p_id = id;
1067    let p_index_name = index_name;
1068    let p_drop_table_index_request = drop_table_index_request;
1069    let p_delimiter = delimiter;
1070
1071    let uri_str = format!("{}/v1/table/{id}/index/{index_name}/drop", configuration.base_path, id=crate::apis::urlencode(p_id), index_name=crate::apis::urlencode(p_index_name));
1072    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1073
1074    if let Some(ref param_value) = p_delimiter {
1075        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1076    }
1077    if let Some(ref user_agent) = configuration.user_agent {
1078        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1079    }
1080    req_builder = req_builder.json(&p_drop_table_index_request);
1081
1082    let req = req_builder.build()?;
1083    let resp = configuration.client.execute(req).await?;
1084
1085    let status = resp.status();
1086    let content_type = resp
1087        .headers()
1088        .get("content-type")
1089        .and_then(|v| v.to_str().ok())
1090        .unwrap_or("application/octet-stream");
1091    let content_type = super::ContentType::from(content_type);
1092
1093    if !status.is_client_error() && !status.is_server_error() {
1094        let content = resp.text().await?;
1095        match content_type {
1096            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1097            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::DropTableIndexResponse`"))),
1098            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::DropTableIndexResponse`")))),
1099        }
1100    } else {
1101        let content = resp.text().await?;
1102        let entity: Option<DropTableIndexError> = serde_json::from_str(&content).ok();
1103        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1104    }
1105}
1106
1107/// Get the query execution plan for a query against table `id`. Returns a human-readable explanation of how the query will be executed. 
1108pub async fn explain_table_query_plan(configuration: &configuration::Configuration, id: &str, explain_table_query_plan_request: models::ExplainTableQueryPlanRequest, delimiter: Option<&str>) -> Result<models::ExplainTableQueryPlanResponse, Error<ExplainTableQueryPlanError>> {
1109    // add a prefix to parameters to efficiently prevent name collisions
1110    let p_id = id;
1111    let p_explain_table_query_plan_request = explain_table_query_plan_request;
1112    let p_delimiter = delimiter;
1113
1114    let uri_str = format!("{}/v1/table/{id}/explain_plan", configuration.base_path, id=crate::apis::urlencode(p_id));
1115    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1116
1117    if let Some(ref param_value) = p_delimiter {
1118        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1119    }
1120    if let Some(ref user_agent) = configuration.user_agent {
1121        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1122    }
1123    req_builder = req_builder.json(&p_explain_table_query_plan_request);
1124
1125    let req = req_builder.build()?;
1126    let resp = configuration.client.execute(req).await?;
1127
1128    let status = resp.status();
1129    let content_type = resp
1130        .headers()
1131        .get("content-type")
1132        .and_then(|v| v.to_str().ok())
1133        .unwrap_or("application/octet-stream");
1134    let content_type = super::ContentType::from(content_type);
1135
1136    if !status.is_client_error() && !status.is_server_error() {
1137        let content = resp.text().await?;
1138        match content_type {
1139            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1140            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ExplainTableQueryPlanResponse`"))),
1141            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::ExplainTableQueryPlanResponse`")))),
1142        }
1143    } else {
1144        let content = resp.text().await?;
1145        let entity: Option<ExplainTableQueryPlanError> = serde_json::from_str(&content).ok();
1146        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1147    }
1148}
1149
1150/// Get statistics for table `id`, including row counts, data sizes, and column statistics. 
1151pub async fn get_table_stats(configuration: &configuration::Configuration, id: &str, get_table_stats_request: models::GetTableStatsRequest, delimiter: Option<&str>) -> Result<models::GetTableStatsResponse, Error<GetTableStatsError>> {
1152    // add a prefix to parameters to efficiently prevent name collisions
1153    let p_id = id;
1154    let p_get_table_stats_request = get_table_stats_request;
1155    let p_delimiter = delimiter;
1156
1157    let uri_str = format!("{}/v1/table/{id}/stats", configuration.base_path, id=crate::apis::urlencode(p_id));
1158    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1159
1160    if let Some(ref param_value) = p_delimiter {
1161        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1162    }
1163    if let Some(ref user_agent) = configuration.user_agent {
1164        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1165    }
1166    req_builder = req_builder.json(&p_get_table_stats_request);
1167
1168    let req = req_builder.build()?;
1169    let resp = configuration.client.execute(req).await?;
1170
1171    let status = resp.status();
1172    let content_type = resp
1173        .headers()
1174        .get("content-type")
1175        .and_then(|v| v.to_str().ok())
1176        .unwrap_or("application/octet-stream");
1177    let content_type = super::ContentType::from(content_type);
1178
1179    if !status.is_client_error() && !status.is_server_error() {
1180        let content = resp.text().await?;
1181        match content_type {
1182            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1183            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::GetTableStatsResponse`"))),
1184            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::GetTableStatsResponse`")))),
1185        }
1186    } else {
1187        let content = resp.text().await?;
1188        let entity: Option<GetTableStatsError> = serde_json::from_str(&content).ok();
1189        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1190    }
1191}
1192
1193/// Get the version number that a specific tag points to for table `id`. 
1194pub async fn get_table_tag_version(configuration: &configuration::Configuration, id: &str, get_table_tag_version_request: models::GetTableTagVersionRequest, delimiter: Option<&str>) -> Result<models::GetTableTagVersionResponse, Error<GetTableTagVersionError>> {
1195    // add a prefix to parameters to efficiently prevent name collisions
1196    let p_id = id;
1197    let p_get_table_tag_version_request = get_table_tag_version_request;
1198    let p_delimiter = delimiter;
1199
1200    let uri_str = format!("{}/v1/table/{id}/tags/version", configuration.base_path, id=crate::apis::urlencode(p_id));
1201    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1202
1203    if let Some(ref param_value) = p_delimiter {
1204        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1205    }
1206    if let Some(ref user_agent) = configuration.user_agent {
1207        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1208    }
1209    req_builder = req_builder.json(&p_get_table_tag_version_request);
1210
1211    let req = req_builder.build()?;
1212    let resp = configuration.client.execute(req).await?;
1213
1214    let status = resp.status();
1215    let content_type = resp
1216        .headers()
1217        .get("content-type")
1218        .and_then(|v| v.to_str().ok())
1219        .unwrap_or("application/octet-stream");
1220    let content_type = super::ContentType::from(content_type);
1221
1222    if !status.is_client_error() && !status.is_server_error() {
1223        let content = resp.text().await?;
1224        match content_type {
1225            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1226            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::GetTableTagVersionResponse`"))),
1227            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::GetTableTagVersionResponse`")))),
1228        }
1229    } else {
1230        let content = resp.text().await?;
1231        let entity: Option<GetTableTagVersionError> = serde_json::from_str(&content).ok();
1232        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1233    }
1234}
1235
1236/// Insert new records into table `id`.  REST NAMESPACE ONLY REST namespace uses Arrow IPC stream as the request body. It passes in the `InsertIntoTableRequest` information in the following way: - `id`: pass through path parameter of the same name - `mode`: pass through query parameter of the same name 
1237pub async fn insert_into_table(configuration: &configuration::Configuration, id: &str, body: Vec<u8>, delimiter: Option<&str>, mode: Option<&str>) -> Result<models::InsertIntoTableResponse, Error<InsertIntoTableError>> {
1238    // add a prefix to parameters to efficiently prevent name collisions
1239    let p_id = id;
1240    let p_body = body;
1241    let p_delimiter = delimiter;
1242    let p_mode = mode;
1243
1244    let uri_str = format!("{}/v1/table/{id}/insert", configuration.base_path, id=crate::apis::urlencode(p_id));
1245    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1246
1247    if let Some(ref param_value) = p_delimiter {
1248        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1249    }
1250    if let Some(ref param_value) = p_mode {
1251        req_builder = req_builder.query(&[("mode", &param_value.to_string())]);
1252    }
1253    if let Some(ref user_agent) = configuration.user_agent {
1254        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1255    }
1256    req_builder = req_builder.body(p_body);
1257
1258    let req = req_builder.build()?;
1259    let resp = configuration.client.execute(req).await?;
1260
1261    let status = resp.status();
1262    let content_type = resp
1263        .headers()
1264        .get("content-type")
1265        .and_then(|v| v.to_str().ok())
1266        .unwrap_or("application/octet-stream");
1267    let content_type = super::ContentType::from(content_type);
1268
1269    if !status.is_client_error() && !status.is_server_error() {
1270        let content = resp.text().await?;
1271        match content_type {
1272            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1273            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::InsertIntoTableResponse`"))),
1274            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::InsertIntoTableResponse`")))),
1275        }
1276    } else {
1277        let content = resp.text().await?;
1278        let entity: Option<InsertIntoTableError> = serde_json::from_str(&content).ok();
1279        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1280    }
1281}
1282
1283/// List all indices created on a table. Returns information about each index including name, columns, status, and UUID. 
1284pub async fn list_table_indices(configuration: &configuration::Configuration, id: &str, list_table_indices_request: models::ListTableIndicesRequest, delimiter: Option<&str>) -> Result<models::ListTableIndicesResponse, Error<ListTableIndicesError>> {
1285    // add a prefix to parameters to efficiently prevent name collisions
1286    let p_id = id;
1287    let p_list_table_indices_request = list_table_indices_request;
1288    let p_delimiter = delimiter;
1289
1290    let uri_str = format!("{}/v1/table/{id}/index/list", configuration.base_path, id=crate::apis::urlencode(p_id));
1291    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1292
1293    if let Some(ref param_value) = p_delimiter {
1294        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1295    }
1296    if let Some(ref user_agent) = configuration.user_agent {
1297        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1298    }
1299    req_builder = req_builder.json(&p_list_table_indices_request);
1300
1301    let req = req_builder.build()?;
1302    let resp = configuration.client.execute(req).await?;
1303
1304    let status = resp.status();
1305    let content_type = resp
1306        .headers()
1307        .get("content-type")
1308        .and_then(|v| v.to_str().ok())
1309        .unwrap_or("application/octet-stream");
1310    let content_type = super::ContentType::from(content_type);
1311
1312    if !status.is_client_error() && !status.is_server_error() {
1313        let content = resp.text().await?;
1314        match content_type {
1315            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1316            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ListTableIndicesResponse`"))),
1317            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::ListTableIndicesResponse`")))),
1318        }
1319    } else {
1320        let content = resp.text().await?;
1321        let entity: Option<ListTableIndicesError> = serde_json::from_str(&content).ok();
1322        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1323    }
1324}
1325
1326/// List all tags that have been created for table `id`. Returns a map of tag names to their corresponding version numbers and metadata.  REST NAMESPACE ONLY REST namespace uses GET to perform this operation without a request body. It passes in the `ListTableTagsRequest` information in the following way: - `id`: pass through path parameter of the same name - `page_token`: pass through query parameter of the same name - `limit`: pass through query parameter of the same name 
1327pub async fn list_table_tags(configuration: &configuration::Configuration, id: &str, delimiter: Option<&str>, page_token: Option<&str>, limit: Option<i32>) -> Result<models::ListTableTagsResponse, Error<ListTableTagsError>> {
1328    // add a prefix to parameters to efficiently prevent name collisions
1329    let p_id = id;
1330    let p_delimiter = delimiter;
1331    let p_page_token = page_token;
1332    let p_limit = limit;
1333
1334    let uri_str = format!("{}/v1/table/{id}/tags/list", configuration.base_path, id=crate::apis::urlencode(p_id));
1335    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
1336
1337    if let Some(ref param_value) = p_delimiter {
1338        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1339    }
1340    if let Some(ref param_value) = p_page_token {
1341        req_builder = req_builder.query(&[("page_token", &param_value.to_string())]);
1342    }
1343    if let Some(ref param_value) = p_limit {
1344        req_builder = req_builder.query(&[("limit", &param_value.to_string())]);
1345    }
1346    if let Some(ref user_agent) = configuration.user_agent {
1347        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1348    }
1349
1350    let req = req_builder.build()?;
1351    let resp = configuration.client.execute(req).await?;
1352
1353    let status = resp.status();
1354    let content_type = resp
1355        .headers()
1356        .get("content-type")
1357        .and_then(|v| v.to_str().ok())
1358        .unwrap_or("application/octet-stream");
1359    let content_type = super::ContentType::from(content_type);
1360
1361    if !status.is_client_error() && !status.is_server_error() {
1362        let content = resp.text().await?;
1363        match content_type {
1364            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1365            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ListTableTagsResponse`"))),
1366            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::ListTableTagsResponse`")))),
1367        }
1368    } else {
1369        let content = resp.text().await?;
1370        let entity: Option<ListTableTagsError> = serde_json::from_str(&content).ok();
1371        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1372    }
1373}
1374
1375/// List all versions (commits) of table `id` with their metadata. 
1376pub async fn list_table_versions(configuration: &configuration::Configuration, id: &str, list_table_versions_request: models::ListTableVersionsRequest, delimiter: Option<&str>) -> Result<models::ListTableVersionsResponse, Error<ListTableVersionsError>> {
1377    // add a prefix to parameters to efficiently prevent name collisions
1378    let p_id = id;
1379    let p_list_table_versions_request = list_table_versions_request;
1380    let p_delimiter = delimiter;
1381
1382    let uri_str = format!("{}/v1/table/{id}/version/list", configuration.base_path, id=crate::apis::urlencode(p_id));
1383    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1384
1385    if let Some(ref param_value) = p_delimiter {
1386        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1387    }
1388    if let Some(ref user_agent) = configuration.user_agent {
1389        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1390    }
1391    req_builder = req_builder.json(&p_list_table_versions_request);
1392
1393    let req = req_builder.build()?;
1394    let resp = configuration.client.execute(req).await?;
1395
1396    let status = resp.status();
1397    let content_type = resp
1398        .headers()
1399        .get("content-type")
1400        .and_then(|v| v.to_str().ok())
1401        .unwrap_or("application/octet-stream");
1402    let content_type = super::ContentType::from(content_type);
1403
1404    if !status.is_client_error() && !status.is_server_error() {
1405        let content = resp.text().await?;
1406        match content_type {
1407            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1408            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ListTableVersionsResponse`"))),
1409            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::ListTableVersionsResponse`")))),
1410        }
1411    } else {
1412        let content = resp.text().await?;
1413        let entity: Option<ListTableVersionsError> = serde_json::from_str(&content).ok();
1414        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1415    }
1416}
1417
1418/// List all child table names of the parent namespace `id`.  REST NAMESPACE ONLY REST namespace uses GET to perform this operation without a request body. It passes in the `ListTablesRequest` information in the following way: - `id`: pass through path parameter of the same name - `page_token`: pass through query parameter of the same name - `limit`: pass through query parameter of the same name 
1419pub async fn list_tables(configuration: &configuration::Configuration, id: &str, delimiter: Option<&str>, page_token: Option<&str>, limit: Option<i32>) -> Result<models::ListTablesResponse, Error<ListTablesError>> {
1420    // add a prefix to parameters to efficiently prevent name collisions
1421    let p_id = id;
1422    let p_delimiter = delimiter;
1423    let p_page_token = page_token;
1424    let p_limit = limit;
1425
1426    let uri_str = format!("{}/v1/namespace/{id}/table/list", configuration.base_path, id=crate::apis::urlencode(p_id));
1427    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
1428
1429    if let Some(ref param_value) = p_delimiter {
1430        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1431    }
1432    if let Some(ref param_value) = p_page_token {
1433        req_builder = req_builder.query(&[("page_token", &param_value.to_string())]);
1434    }
1435    if let Some(ref param_value) = p_limit {
1436        req_builder = req_builder.query(&[("limit", &param_value.to_string())]);
1437    }
1438    if let Some(ref user_agent) = configuration.user_agent {
1439        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1440    }
1441
1442    let req = req_builder.build()?;
1443    let resp = configuration.client.execute(req).await?;
1444
1445    let status = resp.status();
1446    let content_type = resp
1447        .headers()
1448        .get("content-type")
1449        .and_then(|v| v.to_str().ok())
1450        .unwrap_or("application/octet-stream");
1451    let content_type = super::ContentType::from(content_type);
1452
1453    if !status.is_client_error() && !status.is_server_error() {
1454        let content = resp.text().await?;
1455        match content_type {
1456            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1457            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::ListTablesResponse`"))),
1458            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::ListTablesResponse`")))),
1459        }
1460    } else {
1461        let content = resp.text().await?;
1462        let entity: Option<ListTablesError> = serde_json::from_str(&content).ok();
1463        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1464    }
1465}
1466
1467/// Performs a merge insert (upsert) operation on table `id`. This operation updates existing rows based on a matching column and inserts new rows that don't match. It returns the number of rows inserted and updated.  REST NAMESPACE ONLY REST namespace uses Arrow IPC stream as the request body. It passes in the `MergeInsertIntoTableRequest` information in the following way: - `id`: pass through path parameter of the same name - `on`: pass through query parameter of the same name - `when_matched_update_all`: pass through query parameter of the same name - `when_matched_update_all_filt`: pass through query parameter of the same name - `when_not_matched_insert_all`: pass through query parameter of the same name - `when_not_matched_by_source_delete`: pass through query parameter of the same name - `when_not_matched_by_source_delete_filt`: pass through query parameter of the same name 
1468pub async fn merge_insert_into_table(configuration: &configuration::Configuration, id: &str, on: &str, body: Vec<u8>, delimiter: Option<&str>, when_matched_update_all: Option<bool>, when_matched_update_all_filt: Option<&str>, when_not_matched_insert_all: Option<bool>, when_not_matched_by_source_delete: Option<bool>, when_not_matched_by_source_delete_filt: Option<&str>) -> Result<models::MergeInsertIntoTableResponse, Error<MergeInsertIntoTableError>> {
1469    // add a prefix to parameters to efficiently prevent name collisions
1470    let p_id = id;
1471    let p_on = on;
1472    let p_body = body;
1473    let p_delimiter = delimiter;
1474    let p_when_matched_update_all = when_matched_update_all;
1475    let p_when_matched_update_all_filt = when_matched_update_all_filt;
1476    let p_when_not_matched_insert_all = when_not_matched_insert_all;
1477    let p_when_not_matched_by_source_delete = when_not_matched_by_source_delete;
1478    let p_when_not_matched_by_source_delete_filt = when_not_matched_by_source_delete_filt;
1479
1480    let uri_str = format!("{}/v1/table/{id}/merge_insert", configuration.base_path, id=crate::apis::urlencode(p_id));
1481    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1482
1483    if let Some(ref param_value) = p_delimiter {
1484        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1485    }
1486    req_builder = req_builder.query(&[("on", &p_on.to_string())]);
1487    if let Some(ref param_value) = p_when_matched_update_all {
1488        req_builder = req_builder.query(&[("when_matched_update_all", &param_value.to_string())]);
1489    }
1490    if let Some(ref param_value) = p_when_matched_update_all_filt {
1491        req_builder = req_builder.query(&[("when_matched_update_all_filt", &param_value.to_string())]);
1492    }
1493    if let Some(ref param_value) = p_when_not_matched_insert_all {
1494        req_builder = req_builder.query(&[("when_not_matched_insert_all", &param_value.to_string())]);
1495    }
1496    if let Some(ref param_value) = p_when_not_matched_by_source_delete {
1497        req_builder = req_builder.query(&[("when_not_matched_by_source_delete", &param_value.to_string())]);
1498    }
1499    if let Some(ref param_value) = p_when_not_matched_by_source_delete_filt {
1500        req_builder = req_builder.query(&[("when_not_matched_by_source_delete_filt", &param_value.to_string())]);
1501    }
1502    if let Some(ref user_agent) = configuration.user_agent {
1503        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1504    }
1505    req_builder = req_builder.body(p_body);
1506
1507    let req = req_builder.build()?;
1508    let resp = configuration.client.execute(req).await?;
1509
1510    let status = resp.status();
1511    let content_type = resp
1512        .headers()
1513        .get("content-type")
1514        .and_then(|v| v.to_str().ok())
1515        .unwrap_or("application/octet-stream");
1516    let content_type = super::ContentType::from(content_type);
1517
1518    if !status.is_client_error() && !status.is_server_error() {
1519        let content = resp.text().await?;
1520        match content_type {
1521            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1522            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::MergeInsertIntoTableResponse`"))),
1523            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::MergeInsertIntoTableResponse`")))),
1524        }
1525    } else {
1526        let content = resp.text().await?;
1527        let entity: Option<MergeInsertIntoTableError> = serde_json::from_str(&content).ok();
1528        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1529    }
1530}
1531
1532/// Query table `id` with vector search, full text search and optional SQL filtering. Returns results in Arrow IPC file or stream format. 
1533pub async fn query_table(configuration: &configuration::Configuration, id: &str, query_table_request: models::QueryTableRequest, delimiter: Option<&str>) -> Result<reqwest::Response, Error<QueryTableError>> {
1534    // add a prefix to parameters to efficiently prevent name collisions
1535    let p_id = id;
1536    let p_query_table_request = query_table_request;
1537    let p_delimiter = delimiter;
1538
1539    let uri_str = format!("{}/v1/table/{id}/query", configuration.base_path, id=crate::apis::urlencode(p_id));
1540    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1541
1542    if let Some(ref param_value) = p_delimiter {
1543        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1544    }
1545    if let Some(ref user_agent) = configuration.user_agent {
1546        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1547    }
1548    req_builder = req_builder.json(&p_query_table_request);
1549
1550    let req = req_builder.build()?;
1551    let resp = configuration.client.execute(req).await?;
1552
1553    let status = resp.status();
1554
1555    if !status.is_client_error() && !status.is_server_error() {
1556        Ok(resp)
1557    } else {
1558        let content = resp.text().await?;
1559        let entity: Option<QueryTableError> = serde_json::from_str(&content).ok();
1560        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1561    }
1562}
1563
1564/// Register an existing table at a given storage location as `id`. 
1565pub async fn register_table(configuration: &configuration::Configuration, id: &str, register_table_request: models::RegisterTableRequest, delimiter: Option<&str>) -> Result<models::RegisterTableResponse, Error<RegisterTableError>> {
1566    // add a prefix to parameters to efficiently prevent name collisions
1567    let p_id = id;
1568    let p_register_table_request = register_table_request;
1569    let p_delimiter = delimiter;
1570
1571    let uri_str = format!("{}/v1/table/{id}/register", configuration.base_path, id=crate::apis::urlencode(p_id));
1572    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1573
1574    if let Some(ref param_value) = p_delimiter {
1575        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1576    }
1577    if let Some(ref user_agent) = configuration.user_agent {
1578        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1579    }
1580    req_builder = req_builder.json(&p_register_table_request);
1581
1582    let req = req_builder.build()?;
1583    let resp = configuration.client.execute(req).await?;
1584
1585    let status = resp.status();
1586    let content_type = resp
1587        .headers()
1588        .get("content-type")
1589        .and_then(|v| v.to_str().ok())
1590        .unwrap_or("application/octet-stream");
1591    let content_type = super::ContentType::from(content_type);
1592
1593    if !status.is_client_error() && !status.is_server_error() {
1594        let content = resp.text().await?;
1595        match content_type {
1596            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1597            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::RegisterTableResponse`"))),
1598            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::RegisterTableResponse`")))),
1599        }
1600    } else {
1601        let content = resp.text().await?;
1602        let entity: Option<RegisterTableError> = serde_json::from_str(&content).ok();
1603        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1604    }
1605}
1606
1607/// Restore table `id` to a specific version. 
1608pub async fn restore_table(configuration: &configuration::Configuration, id: &str, restore_table_request: models::RestoreTableRequest, delimiter: Option<&str>) -> Result<models::RestoreTableResponse, Error<RestoreTableError>> {
1609    // add a prefix to parameters to efficiently prevent name collisions
1610    let p_id = id;
1611    let p_restore_table_request = restore_table_request;
1612    let p_delimiter = delimiter;
1613
1614    let uri_str = format!("{}/v1/table/{id}/restore", configuration.base_path, id=crate::apis::urlencode(p_id));
1615    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1616
1617    if let Some(ref param_value) = p_delimiter {
1618        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1619    }
1620    if let Some(ref user_agent) = configuration.user_agent {
1621        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1622    }
1623    req_builder = req_builder.json(&p_restore_table_request);
1624
1625    let req = req_builder.build()?;
1626    let resp = configuration.client.execute(req).await?;
1627
1628    let status = resp.status();
1629    let content_type = resp
1630        .headers()
1631        .get("content-type")
1632        .and_then(|v| v.to_str().ok())
1633        .unwrap_or("application/octet-stream");
1634    let content_type = super::ContentType::from(content_type);
1635
1636    if !status.is_client_error() && !status.is_server_error() {
1637        let content = resp.text().await?;
1638        match content_type {
1639            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1640            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::RestoreTableResponse`"))),
1641            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::RestoreTableResponse`")))),
1642        }
1643    } else {
1644        let content = resp.text().await?;
1645        let entity: Option<RestoreTableError> = serde_json::from_str(&content).ok();
1646        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1647    }
1648}
1649
1650/// Check if table `id` exists.  This operation should behave exactly like DescribeTable,  except it does not contain a response body.  For DirectoryNamespace implementation, a table exists if either: - The table has Lance data versions (regular table created with CreateTable) - A `.lance-reserved` file exists in the table directory (empty table created with CreateEmptyTable) 
1651pub async fn table_exists(configuration: &configuration::Configuration, id: &str, table_exists_request: models::TableExistsRequest, delimiter: Option<&str>) -> Result<(), Error<TableExistsError>> {
1652    // add a prefix to parameters to efficiently prevent name collisions
1653    let p_id = id;
1654    let p_table_exists_request = table_exists_request;
1655    let p_delimiter = delimiter;
1656
1657    let uri_str = format!("{}/v1/table/{id}/exists", configuration.base_path, id=crate::apis::urlencode(p_id));
1658    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1659
1660    if let Some(ref param_value) = p_delimiter {
1661        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1662    }
1663    if let Some(ref user_agent) = configuration.user_agent {
1664        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1665    }
1666    req_builder = req_builder.json(&p_table_exists_request);
1667
1668    let req = req_builder.build()?;
1669    let resp = configuration.client.execute(req).await?;
1670
1671    let status = resp.status();
1672
1673    if !status.is_client_error() && !status.is_server_error() {
1674        Ok(())
1675    } else {
1676        let content = resp.text().await?;
1677        let entity: Option<TableExistsError> = serde_json::from_str(&content).ok();
1678        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1679    }
1680}
1681
1682/// Update existing rows in table `id`. 
1683pub async fn update_table(configuration: &configuration::Configuration, id: &str, update_table_request: models::UpdateTableRequest, delimiter: Option<&str>) -> Result<models::UpdateTableResponse, Error<UpdateTableError>> {
1684    // add a prefix to parameters to efficiently prevent name collisions
1685    let p_id = id;
1686    let p_update_table_request = update_table_request;
1687    let p_delimiter = delimiter;
1688
1689    let uri_str = format!("{}/v1/table/{id}/update", configuration.base_path, id=crate::apis::urlencode(p_id));
1690    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1691
1692    if let Some(ref param_value) = p_delimiter {
1693        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1694    }
1695    if let Some(ref user_agent) = configuration.user_agent {
1696        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1697    }
1698    req_builder = req_builder.json(&p_update_table_request);
1699
1700    let req = req_builder.build()?;
1701    let resp = configuration.client.execute(req).await?;
1702
1703    let status = resp.status();
1704    let content_type = resp
1705        .headers()
1706        .get("content-type")
1707        .and_then(|v| v.to_str().ok())
1708        .unwrap_or("application/octet-stream");
1709    let content_type = super::ContentType::from(content_type);
1710
1711    if !status.is_client_error() && !status.is_server_error() {
1712        let content = resp.text().await?;
1713        match content_type {
1714            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1715            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::UpdateTableResponse`"))),
1716            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::UpdateTableResponse`")))),
1717        }
1718    } else {
1719        let content = resp.text().await?;
1720        let entity: Option<UpdateTableError> = serde_json::from_str(&content).ok();
1721        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1722    }
1723}
1724
1725/// Update an existing tag for table `id` to point to a different version. 
1726pub async fn update_table_tag(configuration: &configuration::Configuration, id: &str, update_table_tag_request: models::UpdateTableTagRequest, delimiter: Option<&str>) -> Result<(), Error<UpdateTableTagError>> {
1727    // add a prefix to parameters to efficiently prevent name collisions
1728    let p_id = id;
1729    let p_update_table_tag_request = update_table_tag_request;
1730    let p_delimiter = delimiter;
1731
1732    let uri_str = format!("{}/v1/table/{id}/tags/update", configuration.base_path, id=crate::apis::urlencode(p_id));
1733    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1734
1735    if let Some(ref param_value) = p_delimiter {
1736        req_builder = req_builder.query(&[("delimiter", &param_value.to_string())]);
1737    }
1738    if let Some(ref user_agent) = configuration.user_agent {
1739        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1740    }
1741    req_builder = req_builder.json(&p_update_table_tag_request);
1742
1743    let req = req_builder.build()?;
1744    let resp = configuration.client.execute(req).await?;
1745
1746    let status = resp.status();
1747
1748    if !status.is_client_error() && !status.is_server_error() {
1749        Ok(())
1750    } else {
1751        let content = resp.text().await?;
1752        let entity: Option<UpdateTableTagError> = serde_json::from_str(&content).ok();
1753        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1754    }
1755}
1756