#![doc = "Generated transport-independent contract objects."]
use std::error::Error as StdError;
use std::fmt::{self, Display, Formatter};
use serde::{Deserialize, Deserializer, Serialize, Serializer};
use serde_json::Value;
use spiral_contract::error::{ErrorEnvelope, ServiceError};
use spiral_contract::safelong::SafeUnsignedLong;
use spiral_contract::strict::{DeserializeStrict, Strict};
use uuid::Uuid;
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct AbortBlobUploadRequest {
#[serde(rename = "storage")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub storage: Option<StorageBinding>,
#[serde(rename = "upload")]
pub upload: BlobUpload,
}
impl<'de> DeserializeStrict<'de> for AbortBlobUploadRequest {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "storage")]
#[serde(default)]
storage: Strict<Option<StorageBinding>>,
#[serde(rename = "upload")]
upload: Strict<BlobUpload>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
storage: wire.storage.0,
upload: wire.upload.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct AddColumn {
#[serde(rename = "after")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub after: Option<Vec<String>>,
#[serde(rename = "field")]
pub field: ArrowField,
}
impl<'de> DeserializeStrict<'de> for AddColumn {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "after")]
#[serde(default)]
after: Strict<Option<Vec<String>>>,
#[serde(rename = "field")]
field: Strict<ArrowField>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
after: wire.after.0,
field: wire.field.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct AddedFragment {
#[serde(rename = "appended")]
pub appended: Vec<RowIdRange>,
#[serde(rename = "carried")]
pub carried: Vec<RowIdRange>,
#[serde(rename = "patched")]
pub patched: Vec<RowIdRange>,
}
impl<'de> DeserializeStrict<'de> for AddedFragment {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "appended")]
appended: Strict<Vec<RowIdRange>>,
#[serde(rename = "carried")]
carried: Strict<Vec<RowIdRange>>,
#[serde(rename = "patched")]
patched: Strict<Vec<RowIdRange>>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
appended: wire.appended.0,
carried: wire.carried.0,
patched: wire.patched.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Aggregate {
#[serde(rename = "aggregates")]
pub aggregates: Vec<NamedAggregate>,
#[serde(rename = "groups")]
pub groups: Vec<String>,
#[serde(rename = "maxGroups")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_groups: Option<u32>,
}
impl<'de> DeserializeStrict<'de> for Aggregate {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "aggregates")]
aggregates: Strict<Vec<NamedAggregate>>,
#[serde(rename = "groups")]
groups: Strict<Vec<String>>,
#[serde(rename = "maxGroups")]
#[serde(default)]
max_groups: Strict<Option<u32>>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
aggregates: wire.aggregates.0,
groups: wire.groups.0,
max_groups: wire.max_groups.0,
})
}
}
#[derive(Clone, Debug, PartialEq)]
pub enum AggregateFunction {
Count(CountAggregate),
Histogram(HistogramAggregate),
Max(ColumnAggregate),
Min(ColumnAggregate),
Sum(ColumnAggregate),
Unknown { tag: String, value: Value },
}
impl Serialize for AggregateFunction {
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
match self {
Self::Count(value) => {
let mut object = serde_json::Map::new();
object.insert("type".into(), Value::String("count".into()));
object.insert(
"count".into(),
serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
);
Value::Object(object).serialize(serializer)
}
Self::Histogram(value) => {
let mut object = serde_json::Map::new();
object.insert("type".into(), Value::String("histogram".into()));
object.insert(
"histogram".into(),
serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
);
Value::Object(object).serialize(serializer)
}
Self::Max(value) => {
let mut object = serde_json::Map::new();
object.insert("type".into(), Value::String("max".into()));
object.insert(
"max".into(),
serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
);
Value::Object(object).serialize(serializer)
}
Self::Min(value) => {
let mut object = serde_json::Map::new();
object.insert("type".into(), Value::String("min".into()));
object.insert(
"min".into(),
serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
);
Value::Object(object).serialize(serializer)
}
Self::Sum(value) => {
let mut object = serde_json::Map::new();
object.insert("type".into(), Value::String("sum".into()));
object.insert(
"sum".into(),
serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
);
Value::Object(object).serialize(serializer)
}
Self::Unknown { tag, value } => {
if value.get("type").and_then(Value::as_str) != Some(tag.as_str()) {
return Err(serde::ser::Error::custom(
"unknown union discriminator mismatch",
));
}
value.serialize(serializer)
}
}
}
}
impl<'de> Deserialize<'de> for AggregateFunction {
fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
let value = Value::deserialize(deserializer)?;
let tag = value
.get("type")
.and_then(Value::as_str)
.ok_or_else(|| serde::de::Error::custom("union requires type"))?;
match tag {
"count" => Ok(Self::Count(
serde_json::from_value(
value
.get("count")
.cloned()
.ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
)
.map_err(serde::de::Error::custom)?,
)),
"histogram" => Ok(Self::Histogram(
serde_json::from_value(
value
.get("histogram")
.cloned()
.ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
)
.map_err(serde::de::Error::custom)?,
)),
"max" => Ok(Self::Max(
serde_json::from_value(
value
.get("max")
.cloned()
.ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
)
.map_err(serde::de::Error::custom)?,
)),
"min" => Ok(Self::Min(
serde_json::from_value(
value
.get("min")
.cloned()
.ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
)
.map_err(serde::de::Error::custom)?,
)),
"sum" => Ok(Self::Sum(
serde_json::from_value(
value
.get("sum")
.cloned()
.ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
)
.map_err(serde::de::Error::custom)?,
)),
tag => Ok(Self::Unknown {
tag: tag.to_owned(),
value,
}),
}
}
}
impl<'de> DeserializeStrict<'de> for AggregateFunction {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
enum __Tag0 {
#[serde(rename = "count")]
Value,
}
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Arm0 {
#[serde(rename = "type")]
_tag: __Tag0,
#[serde(rename = "count")]
value: Strict<CountAggregate>,
}
#[derive(Deserialize)]
enum __Tag1 {
#[serde(rename = "histogram")]
Value,
}
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Arm1 {
#[serde(rename = "type")]
_tag: __Tag1,
#[serde(rename = "histogram")]
value: Strict<HistogramAggregate>,
}
#[derive(Deserialize)]
enum __Tag2 {
#[serde(rename = "max")]
Value,
}
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Arm2 {
#[serde(rename = "type")]
_tag: __Tag2,
#[serde(rename = "max")]
value: Strict<ColumnAggregate>,
}
#[derive(Deserialize)]
enum __Tag3 {
#[serde(rename = "min")]
Value,
}
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Arm3 {
#[serde(rename = "type")]
_tag: __Tag3,
#[serde(rename = "min")]
value: Strict<ColumnAggregate>,
}
#[derive(Deserialize)]
enum __Tag4 {
#[serde(rename = "sum")]
Value,
}
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Arm4 {
#[serde(rename = "type")]
_tag: __Tag4,
#[serde(rename = "sum")]
value: Strict<ColumnAggregate>,
}
#[derive(Deserialize)]
#[serde(untagged)]
enum __Known {
Count(Box<__Arm0>),
Histogram(Box<__Arm1>),
Max(Box<__Arm2>),
Min(Box<__Arm3>),
Sum(Box<__Arm4>),
}
Ok(match __Known::deserialize(deserializer)? {
__Known::Count(arm) => Self::Count(arm.value.0),
__Known::Histogram(arm) => Self::Histogram(arm.value.0),
__Known::Max(arm) => Self::Max(arm.value.0),
__Known::Min(arm) => Self::Min(arm.value.0),
__Known::Sum(arm) => Self::Sum(arm.value.0),
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct AppendRowsRequest {
#[serde(rename = "attempt")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub attempt: Option<Uuid>,
#[serde(rename = "base")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub base: Option<Uuid>,
#[serde(rename = "properties")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub properties: Option<WriteProperties>,
#[serde(rename = "schemaChanges")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub schema_changes: Option<Vec<SchemaChange>>,
#[serde(rename = "table")]
pub table: TableBinding,
}
impl<'de> DeserializeStrict<'de> for AppendRowsRequest {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "attempt")]
#[serde(default)]
attempt: Strict<Option<Uuid>>,
#[serde(rename = "base")]
#[serde(default)]
base: Strict<Option<Uuid>>,
#[serde(rename = "properties")]
#[serde(default)]
properties: Strict<Option<WriteProperties>>,
#[serde(rename = "schemaChanges")]
#[serde(default)]
schema_changes: Strict<Option<Vec<SchemaChange>>>,
#[serde(rename = "table")]
table: Strict<TableBinding>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
attempt: wire.attempt.0,
base: wire.base.0,
properties: wire.properties.0,
schema_changes: wire.schema_changes.0,
table: wire.table.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct AppendedFragments {
#[serde(rename = "receipts")]
pub receipts: Vec<FragmentReceipt>,
}
impl<'de> DeserializeStrict<'de> for AppendedFragments {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "receipts")]
receipts: Strict<Vec<FragmentReceipt>>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
receipts: wire.receipts.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[serde(transparent)]
pub struct ArrowDataType(pub Value);
impl<'de> DeserializeStrict<'de> for ArrowDataType {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
Ok(Self(Strict::<Value>::deserialize(deserializer)?.0))
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[serde(transparent)]
pub struct ArrowField(pub Value);
impl<'de> DeserializeStrict<'de> for ArrowField {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
Ok(Self(Strict::<Value>::deserialize(deserializer)?.0))
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[serde(transparent)]
pub struct ArrowSchema(pub Value);
impl<'de> DeserializeStrict<'de> for ArrowSchema {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
Ok(Self(Strict::<Value>::deserialize(deserializer)?.0))
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct AttachColumnsRequest {
#[serde(rename = "attempt")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub attempt: Option<Uuid>,
#[serde(rename = "base")]
pub base: Uuid,
#[serde(rename = "fragmentId")]
pub fragment_id: Uuid,
#[serde(rename = "schemaChanges")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub schema_changes: Option<Vec<SchemaChange>>,
#[serde(rename = "table")]
pub table: TableBinding,
}
impl<'de> DeserializeStrict<'de> for AttachColumnsRequest {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "attempt")]
#[serde(default)]
attempt: Strict<Option<Uuid>>,
#[serde(rename = "base")]
base: Strict<Uuid>,
#[serde(rename = "fragmentId")]
fragment_id: Strict<Uuid>,
#[serde(rename = "schemaChanges")]
#[serde(default)]
schema_changes: Strict<Option<Vec<SchemaChange>>>,
#[serde(rename = "table")]
table: Strict<TableBinding>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
attempt: wire.attempt.0,
base: wire.base.0,
fragment_id: wire.fragment_id.0,
schema_changes: wire.schema_changes.0,
table: wire.table.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct AttachedColumns {
#[serde(rename = "receipt")]
pub receipt: FragmentReceipt,
}
impl<'de> DeserializeStrict<'de> for AttachedColumns {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "receipt")]
receipt: Strict<FragmentReceipt>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
receipt: wire.receipt.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct BindProjectionRequest {
#[serde(rename = "input")]
pub input: ArrowSchema,
#[serde(rename = "projection")]
pub projection: Vec<NamedExpression>,
}
impl<'de> DeserializeStrict<'de> for BindProjectionRequest {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "input")]
input: Strict<ArrowSchema>,
#[serde(rename = "projection")]
projection: Strict<Vec<NamedExpression>>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
input: wire.input.0,
projection: wire.projection.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct Blob {
#[serde(rename = "attempt")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub attempt: Option<Uuid>,
#[serde(rename = "digest")]
pub digest: String,
#[serde(rename = "mediaType")]
pub media_type: String,
#[serde(rename = "objectId")]
pub object_id: Uuid,
#[serde(rename = "size")]
pub size: SafeUnsignedLong,
#[serde(rename = "tableId")]
pub table_id: Uuid,
}
impl<'de> DeserializeStrict<'de> for Blob {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "attempt")]
#[serde(default)]
attempt: Strict<Option<Uuid>>,
#[serde(rename = "digest")]
digest: Strict<String>,
#[serde(rename = "mediaType")]
media_type: Strict<String>,
#[serde(rename = "objectId")]
object_id: Strict<Uuid>,
#[serde(rename = "size")]
size: Strict<SafeUnsignedLong>,
#[serde(rename = "tableId")]
table_id: Strict<Uuid>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
attempt: wire.attempt.0,
digest: wire.digest.0,
media_type: wire.media_type.0,
object_id: wire.object_id.0,
size: wire.size.0,
table_id: wire.table_id.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct BlobPart {
#[serde(rename = "digest")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub digest: Option<String>,
#[serde(rename = "hash")]
pub hash: String,
#[serde(rename = "part")]
pub part: u32,
#[serde(rename = "size")]
pub size: SafeUnsignedLong,
#[serde(rename = "tag")]
pub tag: String,
}
impl<'de> DeserializeStrict<'de> for BlobPart {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "digest")]
#[serde(default)]
digest: Strict<Option<String>>,
#[serde(rename = "hash")]
hash: Strict<String>,
#[serde(rename = "part")]
part: Strict<u32>,
#[serde(rename = "size")]
size: Strict<SafeUnsignedLong>,
#[serde(rename = "tag")]
tag: Strict<String>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
digest: wire.digest.0,
hash: wire.hash.0,
part: wire.part.0,
size: wire.size.0,
tag: wire.tag.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct BlobStat {
#[serde(rename = "etag")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub etag: Option<String>,
#[serde(rename = "size")]
pub size: SafeUnsignedLong,
#[serde(rename = "version")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
}
impl<'de> DeserializeStrict<'de> for BlobStat {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "etag")]
#[serde(default)]
etag: Strict<Option<String>>,
#[serde(rename = "size")]
size: Strict<SafeUnsignedLong>,
#[serde(rename = "version")]
#[serde(default)]
version: Strict<Option<String>>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
etag: wire.etag.0,
size: wire.size.0,
version: wire.version.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct BlobUpload {
#[serde(rename = "attempt")]
pub attempt: Uuid,
#[serde(rename = "mediaType")]
pub media_type: String,
#[serde(rename = "objectId")]
pub object_id: Uuid,
#[serde(rename = "partBytes")]
pub part_bytes: SafeUnsignedLong,
#[serde(rename = "tableId")]
pub table_id: Uuid,
#[serde(rename = "uploadId")]
pub upload_id: String,
}
impl<'de> DeserializeStrict<'de> for BlobUpload {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "attempt")]
attempt: Strict<Uuid>,
#[serde(rename = "mediaType")]
media_type: Strict<String>,
#[serde(rename = "objectId")]
object_id: Strict<Uuid>,
#[serde(rename = "partBytes")]
part_bytes: Strict<SafeUnsignedLong>,
#[serde(rename = "tableId")]
table_id: Strict<Uuid>,
#[serde(rename = "uploadId")]
upload_id: Strict<String>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
attempt: wire.attempt.0,
media_type: wire.media_type.0,
object_id: wire.object_id.0,
part_bytes: wire.part_bytes.0,
table_id: wire.table_id.0,
upload_id: wire.upload_id.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct ByteRange {
#[serde(rename = "end")]
pub end: SafeUnsignedLong,
#[serde(rename = "start")]
pub start: SafeUnsignedLong,
}
impl<'de> DeserializeStrict<'de> for ByteRange {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "end")]
end: Strict<SafeUnsignedLong>,
#[serde(rename = "start")]
start: Strict<SafeUnsignedLong>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
end: wire.end.0,
start: wire.start.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct ChangePlan {
#[serde(rename = "fragments")]
pub fragments: Vec<FragmentChange>,
#[serde(rename = "removedFragmentIds")]
pub removed_fragment_ids: Vec<Uuid>,
#[serde(rename = "retypedColumns")]
pub retyped_columns: Vec<String>,
}
impl<'de> DeserializeStrict<'de> for ChangePlan {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "fragments")]
fragments: Strict<Vec<FragmentChange>>,
#[serde(rename = "removedFragmentIds")]
removed_fragment_ids: Strict<Vec<Uuid>>,
#[serde(rename = "retypedColumns")]
retyped_columns: Strict<Vec<String>>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
fragments: wire.fragments.0,
removed_fragment_ids: wire.removed_fragment_ids.0,
retyped_columns: wire.retyped_columns.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct ColumnAggregate {
#[serde(rename = "column")]
pub column: String,
}
impl<'de> DeserializeStrict<'de> for ColumnAggregate {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "column")]
column: Strict<String>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
column: wire.column.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct ColumnPath {
#[serde(rename = "path")]
pub path: Vec<String>,
}
impl<'de> DeserializeStrict<'de> for ColumnPath {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "path")]
path: Strict<Vec<String>>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self { path: wire.path.0 })
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct ColumnStatistics {
#[serde(rename = "countsExact")]
pub counts_exact: bool,
#[serde(rename = "maxExact")]
pub max_exact: bool,
#[serde(rename = "maxValue")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_value: Option<Expression>,
#[serde(rename = "minExact")]
pub min_exact: bool,
#[serde(rename = "minValue")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub min_value: Option<Expression>,
#[serde(rename = "name")]
pub name: String,
#[serde(rename = "nanCount")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub nan_count: Option<SafeUnsignedLong>,
#[serde(rename = "nullCount")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub null_count: Option<SafeUnsignedLong>,
}
impl<'de> DeserializeStrict<'de> for ColumnStatistics {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "countsExact")]
counts_exact: Strict<bool>,
#[serde(rename = "maxExact")]
max_exact: Strict<bool>,
#[serde(rename = "maxValue")]
#[serde(default)]
max_value: Strict<Option<Expression>>,
#[serde(rename = "minExact")]
min_exact: Strict<bool>,
#[serde(rename = "minValue")]
#[serde(default)]
min_value: Strict<Option<Expression>>,
#[serde(rename = "name")]
name: Strict<String>,
#[serde(rename = "nanCount")]
#[serde(default)]
nan_count: Strict<Option<SafeUnsignedLong>>,
#[serde(rename = "nullCount")]
#[serde(default)]
null_count: Strict<Option<SafeUnsignedLong>>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
counts_exact: wire.counts_exact.0,
max_exact: wire.max_exact.0,
max_value: wire.max_value.0,
min_exact: wire.min_exact.0,
min_value: wire.min_value.0,
name: wire.name.0,
nan_count: wire.nan_count.0,
null_count: wire.null_count.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct CompleteBlobUploadRequest {
#[serde(rename = "parts")]
pub parts: Vec<BlobPart>,
#[serde(rename = "storage")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub storage: Option<StorageBinding>,
#[serde(rename = "upload")]
pub upload: BlobUpload,
}
impl<'de> DeserializeStrict<'de> for CompleteBlobUploadRequest {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "parts")]
parts: Strict<Vec<BlobPart>>,
#[serde(rename = "storage")]
#[serde(default)]
storage: Strict<Option<StorageBinding>>,
#[serde(rename = "upload")]
upload: Strict<BlobUpload>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
parts: wire.parts.0,
storage: wire.storage.0,
upload: wire.upload.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct CountAggregate {
#[serde(rename = "column")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub column: Option<String>,
}
impl<'de> DeserializeStrict<'de> for CountAggregate {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "column")]
#[serde(default)]
column: Strict<Option<String>>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
column: wire.column.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct DeleteBase {
#[serde(rename = "attempt")]
pub attempt: Uuid,
#[serde(rename = "expectedRows")]
pub expected_rows: SafeUnsignedLong,
#[serde(rename = "filter")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub filter: Option<Expression>,
#[serde(rename = "storage")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub storage: Option<StorageBinding>,
#[serde(rename = "versionId")]
pub version_id: Uuid,
}
impl<'de> DeserializeStrict<'de> for DeleteBase {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "attempt")]
attempt: Strict<Uuid>,
#[serde(rename = "expectedRows")]
expected_rows: Strict<SafeUnsignedLong>,
#[serde(rename = "filter")]
#[serde(default)]
filter: Strict<Option<Expression>>,
#[serde(rename = "storage")]
#[serde(default)]
storage: Strict<Option<StorageBinding>>,
#[serde(rename = "versionId")]
version_id: Strict<Uuid>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
attempt: wire.attempt.0,
expected_rows: wire.expected_rows.0,
filter: wire.filter.0,
storage: wire.storage.0,
version_id: wire.version_id.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct DeleteRowsRequest {
#[serde(rename = "attempt")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub attempt: Option<Uuid>,
#[serde(rename = "base")]
pub base: Uuid,
#[serde(rename = "rowIdColumn")]
pub row_id_column: String,
#[serde(rename = "table")]
pub table: TableBinding,
}
impl<'de> DeserializeStrict<'de> for DeleteRowsRequest {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "attempt")]
#[serde(default)]
attempt: Strict<Option<Uuid>>,
#[serde(rename = "base")]
base: Strict<Uuid>,
#[serde(rename = "rowIdColumn")]
row_id_column: Strict<String>,
#[serde(rename = "table")]
table: Strict<TableBinding>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
attempt: wire.attempt.0,
base: wire.base.0,
row_id_column: wire.row_id_column.0,
table: wire.table.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct EditBase {
#[serde(rename = "schemaChanges")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub schema_changes: Option<Vec<SchemaChange>>,
#[serde(rename = "versionId")]
pub version_id: Uuid,
}
impl<'de> DeserializeStrict<'de> for EditBase {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "schemaChanges")]
#[serde(default)]
schema_changes: Strict<Option<Vec<SchemaChange>>>,
#[serde(rename = "versionId")]
version_id: Strict<Uuid>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
schema_changes: wire.schema_changes.0,
version_id: wire.version_id.0,
})
}
}
#[derive(Clone, Debug, PartialEq)]
pub enum Emit {
Aggregate(Aggregate),
TopK(TopK),
Unknown { tag: String, value: Value },
}
impl Serialize for Emit {
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
match self {
Self::Aggregate(value) => {
let mut object = serde_json::Map::new();
object.insert("type".into(), Value::String("aggregate".into()));
object.insert(
"aggregate".into(),
serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
);
Value::Object(object).serialize(serializer)
}
Self::TopK(value) => {
let mut object = serde_json::Map::new();
object.insert("type".into(), Value::String("topK".into()));
object.insert(
"topK".into(),
serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
);
Value::Object(object).serialize(serializer)
}
Self::Unknown { tag, value } => {
if value.get("type").and_then(Value::as_str) != Some(tag.as_str()) {
return Err(serde::ser::Error::custom(
"unknown union discriminator mismatch",
));
}
value.serialize(serializer)
}
}
}
}
impl<'de> Deserialize<'de> for Emit {
fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
let value = Value::deserialize(deserializer)?;
let tag = value
.get("type")
.and_then(Value::as_str)
.ok_or_else(|| serde::de::Error::custom("union requires type"))?;
match tag {
"aggregate" => Ok(Self::Aggregate(
serde_json::from_value(
value
.get("aggregate")
.cloned()
.ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
)
.map_err(serde::de::Error::custom)?,
)),
"topK" => Ok(Self::TopK(
serde_json::from_value(
value
.get("topK")
.cloned()
.ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
)
.map_err(serde::de::Error::custom)?,
)),
tag => Ok(Self::Unknown {
tag: tag.to_owned(),
value,
}),
}
}
}
impl<'de> DeserializeStrict<'de> for Emit {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
enum __Tag0 {
#[serde(rename = "aggregate")]
Value,
}
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Arm0 {
#[serde(rename = "type")]
_tag: __Tag0,
#[serde(rename = "aggregate")]
value: Strict<Aggregate>,
}
#[derive(Deserialize)]
enum __Tag1 {
#[serde(rename = "topK")]
Value,
}
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Arm1 {
#[serde(rename = "type")]
_tag: __Tag1,
#[serde(rename = "topK")]
value: Strict<TopK>,
}
#[derive(Deserialize)]
#[serde(untagged)]
enum __Known {
Aggregate(Box<__Arm0>),
TopK(Box<__Arm1>),
}
Ok(match __Known::deserialize(deserializer)? {
__Known::Aggregate(arm) => Self::Aggregate(arm.value.0),
__Known::TopK(arm) => Self::TopK(arm.value.0),
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct EvaluateRequest {
#[serde(rename = "projection")]
pub projection: Vec<NamedExpression>,
#[serde(rename = "tables")]
pub tables: Vec<TableBinding>,
}
impl<'de> DeserializeStrict<'de> for EvaluateRequest {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "projection")]
projection: Strict<Vec<NamedExpression>>,
#[serde(rename = "tables")]
tables: Strict<Vec<TableBinding>>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
projection: wire.projection.0,
tables: wire.tables.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[serde(transparent)]
pub struct Expression(pub String);
impl std::fmt::Display for Expression {
fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
self.0.fmt(formatter)
}
}
impl<'de> DeserializeStrict<'de> for Expression {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
Ok(Self(Strict::<String>::deserialize(deserializer)?.0))
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct FilterClause {
#[serde(rename = "expression")]
pub expression: Expression,
#[serde(rename = "reason")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub reason: Option<String>,
#[serde(rename = "support")]
pub support: FilterSupport,
}
impl<'de> DeserializeStrict<'de> for FilterClause {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "expression")]
expression: Strict<Expression>,
#[serde(rename = "reason")]
#[serde(default)]
reason: Strict<Option<String>>,
#[serde(rename = "support")]
support: Strict<FilterSupport>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
expression: wire.expression.0,
reason: wire.reason.0,
support: wire.support.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum FilterSupport {
Exact,
Inexact,
Unsupported,
Unknown(String),
}
impl Serialize for FilterSupport {
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
serializer.serialize_str(match self {
Self::Exact => "exact",
Self::Inexact => "inexact",
Self::Unsupported => "unsupported",
Self::Unknown(value) => value,
})
}
}
impl<'de> Deserialize<'de> for FilterSupport {
fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
Ok(match String::deserialize(deserializer)?.as_str() {
"exact" => Self::Exact,
"inexact" => Self::Inexact,
"unsupported" => Self::Unsupported,
value => Self::Unknown(value.to_owned()),
})
}
}
impl<'de> DeserializeStrict<'de> for FilterSupport {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
enum __Known {
#[serde(rename = "exact")]
Exact,
#[serde(rename = "inexact")]
Inexact,
#[serde(rename = "unsupported")]
Unsupported,
}
Ok(match __Known::deserialize(deserializer)? {
__Known::Exact => Self::Exact,
__Known::Inexact => Self::Inexact,
__Known::Unsupported => Self::Unsupported,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct FinalizeWriteRequest {
#[serde(rename = "base")]
pub base: WriteBase,
#[serde(rename = "receipts")]
pub receipts: Vec<FragmentReceipt>,
#[serde(rename = "table")]
pub table: TableBinding,
}
impl<'de> DeserializeStrict<'de> for FinalizeWriteRequest {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "base")]
base: Strict<WriteBase>,
#[serde(rename = "receipts")]
receipts: Strict<Vec<FragmentReceipt>>,
#[serde(rename = "table")]
table: Strict<TableBinding>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
base: wire.base.0,
receipts: wire.receipts.0,
table: wire.table.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct FragmentChange {
#[serde(rename = "change")]
pub change: FragmentDelta,
#[serde(rename = "fragmentId")]
pub fragment_id: Uuid,
#[serde(rename = "rowCount")]
pub row_count: SafeUnsignedLong,
}
impl<'de> DeserializeStrict<'de> for FragmentChange {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "change")]
change: Strict<FragmentDelta>,
#[serde(rename = "fragmentId")]
fragment_id: Strict<Uuid>,
#[serde(rename = "rowCount")]
row_count: Strict<SafeUnsignedLong>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
change: wire.change.0,
fragment_id: wire.fragment_id.0,
row_count: wire.row_count.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum FragmentDelta {
Added(AddedFragment),
Retained(RetainedFragment),
Unknown { tag: String, value: Value },
}
impl Serialize for FragmentDelta {
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
match self {
Self::Added(value) => {
let mut object = serde_json::Map::new();
object.insert("type".into(), Value::String("added".into()));
object.insert(
"added".into(),
serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
);
Value::Object(object).serialize(serializer)
}
Self::Retained(value) => {
let mut object = serde_json::Map::new();
object.insert("type".into(), Value::String("retained".into()));
object.insert(
"retained".into(),
serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
);
Value::Object(object).serialize(serializer)
}
Self::Unknown { tag, value } => {
if value.get("type").and_then(Value::as_str) != Some(tag.as_str()) {
return Err(serde::ser::Error::custom(
"unknown union discriminator mismatch",
));
}
value.serialize(serializer)
}
}
}
}
impl<'de> Deserialize<'de> for FragmentDelta {
fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
let value = Value::deserialize(deserializer)?;
let tag = value
.get("type")
.and_then(Value::as_str)
.ok_or_else(|| serde::de::Error::custom("union requires type"))?;
match tag {
"added" => Ok(Self::Added(
serde_json::from_value(
value
.get("added")
.cloned()
.ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
)
.map_err(serde::de::Error::custom)?,
)),
"retained" => Ok(Self::Retained(
serde_json::from_value(
value
.get("retained")
.cloned()
.ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
)
.map_err(serde::de::Error::custom)?,
)),
tag => Ok(Self::Unknown {
tag: tag.to_owned(),
value,
}),
}
}
}
impl<'de> DeserializeStrict<'de> for FragmentDelta {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
enum __Tag0 {
#[serde(rename = "added")]
Value,
}
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Arm0 {
#[serde(rename = "type")]
_tag: __Tag0,
#[serde(rename = "added")]
value: Strict<AddedFragment>,
}
#[derive(Deserialize)]
enum __Tag1 {
#[serde(rename = "retained")]
Value,
}
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Arm1 {
#[serde(rename = "type")]
_tag: __Tag1,
#[serde(rename = "retained")]
value: Strict<RetainedFragment>,
}
#[derive(Deserialize)]
#[serde(untagged)]
enum __Known {
Added(Box<__Arm0>),
Retained(Box<__Arm1>),
}
Ok(match __Known::deserialize(deserializer)? {
__Known::Added(arm) => Self::Added(arm.value.0),
__Known::Retained(arm) => Self::Retained(arm.value.0),
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct FragmentReceipt {
#[serde(rename = "token")]
pub token: String,
}
impl<'de> DeserializeStrict<'de> for FragmentReceipt {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "token")]
token: Strict<String>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
token: wire.token.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct FunctionCatalog {
#[serde(rename = "functions")]
pub functions: Vec<FunctionInfo>,
}
impl<'de> DeserializeStrict<'de> for FunctionCatalog {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "functions")]
functions: Strict<Vec<FunctionInfo>>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
functions: wire.functions.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct FunctionInfo {
#[serde(rename = "id")]
pub id: String,
#[serde(rename = "overloads")]
pub overloads: Vec<OverloadInfo>,
#[serde(rename = "volatility")]
pub volatility: FunctionVolatility,
}
impl<'de> DeserializeStrict<'de> for FunctionInfo {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "id")]
id: Strict<String>,
#[serde(rename = "overloads")]
overloads: Strict<Vec<OverloadInfo>>,
#[serde(rename = "volatility")]
volatility: Strict<FunctionVolatility>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
id: wire.id.0,
overloads: wire.overloads.0,
volatility: wire.volatility.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum FunctionVolatility {
Immutable,
Stable,
Volatile,
Unknown(String),
}
impl Serialize for FunctionVolatility {
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
serializer.serialize_str(match self {
Self::Immutable => "immutable",
Self::Stable => "stable",
Self::Volatile => "volatile",
Self::Unknown(value) => value,
})
}
}
impl<'de> Deserialize<'de> for FunctionVolatility {
fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
Ok(match String::deserialize(deserializer)?.as_str() {
"immutable" => Self::Immutable,
"stable" => Self::Stable,
"volatile" => Self::Volatile,
value => Self::Unknown(value.to_owned()),
})
}
}
impl<'de> DeserializeStrict<'de> for FunctionVolatility {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
enum __Known {
#[serde(rename = "immutable")]
Immutable,
#[serde(rename = "stable")]
Stable,
#[serde(rename = "volatile")]
Volatile,
}
Ok(match __Known::deserialize(deserializer)? {
__Known::Immutable => Self::Immutable,
__Known::Stable => Self::Stable,
__Known::Volatile => Self::Volatile,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct GenesisBase {
#[serde(rename = "schema")]
pub schema: ArrowSchema,
}
impl<'de> DeserializeStrict<'de> for GenesisBase {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "schema")]
schema: Strict<ArrowSchema>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
schema: wire.schema.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct HistogramAggregate {
#[serde(rename = "bins")]
pub bins: u32,
#[serde(rename = "column")]
pub column: String,
#[serde(rename = "start")]
pub start: f64,
#[serde(rename = "width")]
pub width: f64,
}
impl<'de> DeserializeStrict<'de> for HistogramAggregate {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "bins")]
bins: Strict<u32>,
#[serde(rename = "column")]
column: Strict<String>,
#[serde(rename = "start")]
start: Strict<f64>,
#[serde(rename = "width")]
width: Strict<f64>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
bins: wire.bins.0,
column: wire.column.0,
start: wire.start.0,
width: wire.width.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct LegacyFilter {
#[serde(rename = "field")]
pub field: String,
#[serde(rename = "kind")]
pub kind: String,
#[serde(rename = "operator")]
pub operator: String,
#[serde(rename = "value")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub value: Option<String>,
}
impl<'de> DeserializeStrict<'de> for LegacyFilter {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "field")]
field: Strict<String>,
#[serde(rename = "kind")]
kind: Strict<String>,
#[serde(rename = "operator")]
operator: Strict<String>,
#[serde(rename = "value")]
#[serde(default)]
value: Strict<Option<String>>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
field: wire.field.0,
kind: wire.kind.0,
operator: wire.operator.0,
value: wire.value.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[serde(transparent)]
pub struct LegacyTableSnapshot(pub Value);
impl<'de> DeserializeStrict<'de> for LegacyTableSnapshot {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
Ok(Self(Strict::<Value>::deserialize(deserializer)?.0))
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct MoveColumn {
#[serde(rename = "after")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub after: Option<Vec<String>>,
#[serde(rename = "path")]
pub path: Vec<String>,
}
impl<'de> DeserializeStrict<'de> for MoveColumn {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "after")]
#[serde(default)]
after: Strict<Option<Vec<String>>>,
#[serde(rename = "path")]
path: Strict<Vec<String>>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
after: wire.after.0,
path: wire.path.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct NamedAggregate {
#[serde(rename = "function")]
pub function: AggregateFunction,
#[serde(rename = "name")]
pub name: String,
}
impl<'de> DeserializeStrict<'de> for NamedAggregate {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "function")]
function: Strict<AggregateFunction>,
#[serde(rename = "name")]
name: Strict<String>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
function: wire.function.0,
name: wire.name.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct NamedExpression {
#[serde(rename = "expression")]
pub expression: Expression,
#[serde(rename = "name")]
pub name: String,
}
impl<'de> DeserializeStrict<'de> for NamedExpression {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "expression")]
expression: Strict<Expression>,
#[serde(rename = "name")]
name: Strict<String>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
expression: wire.expression.0,
name: wire.name.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct OverloadInfo {
#[serde(rename = "asynchronous")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub asynchronous: Option<bool>,
#[serde(rename = "name")]
pub name: String,
#[serde(rename = "parameters")]
pub parameters: Vec<ParameterInfo>,
#[serde(rename = "summary")]
pub summary: String,
}
impl<'de> DeserializeStrict<'de> for OverloadInfo {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "asynchronous")]
#[serde(default)]
asynchronous: Strict<Option<bool>>,
#[serde(rename = "name")]
name: Strict<String>,
#[serde(rename = "parameters")]
parameters: Strict<Vec<ParameterInfo>>,
#[serde(rename = "summary")]
summary: Strict<String>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
asynchronous: wire.asynchronous.0,
name: wire.name.0,
parameters: wire.parameters.0,
summary: wire.summary.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct PackBlobsRequest {
#[serde(rename = "attempt")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub attempt: Option<Uuid>,
#[serde(rename = "table")]
pub table: TableBinding,
}
impl<'de> DeserializeStrict<'de> for PackBlobsRequest {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "attempt")]
#[serde(default)]
attempt: Strict<Option<Uuid>>,
#[serde(rename = "table")]
table: Strict<TableBinding>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
attempt: wire.attempt.0,
table: wire.table.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct ParameterInfo {
#[serde(rename = "accepts")]
pub accepts: String,
#[serde(rename = "literal")]
pub literal: bool,
#[serde(rename = "name")]
pub name: String,
#[serde(rename = "required")]
pub required: bool,
}
impl<'de> DeserializeStrict<'de> for ParameterInfo {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "accepts")]
accepts: Strict<String>,
#[serde(rename = "literal")]
literal: Strict<bool>,
#[serde(rename = "name")]
name: Strict<String>,
#[serde(rename = "required")]
required: Strict<bool>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
accepts: wire.accepts.0,
literal: wire.literal.0,
name: wire.name.0,
required: wire.required.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct PartitionColumn {
#[serde(rename = "path")]
pub path: Vec<String>,
#[serde(rename = "transform")]
pub transform: String,
}
impl<'de> DeserializeStrict<'de> for PartitionColumn {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "path")]
path: Strict<Vec<String>>,
#[serde(rename = "transform")]
transform: Strict<String>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
path: wire.path.0,
transform: wire.transform.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct PatchRowsRequest {
#[serde(rename = "attempt")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub attempt: Option<Uuid>,
#[serde(rename = "base")]
pub base: Uuid,
#[serde(rename = "rowIdColumn")]
pub row_id_column: String,
#[serde(rename = "schemaChanges")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub schema_changes: Option<Vec<SchemaChange>>,
#[serde(rename = "table")]
pub table: TableBinding,
}
impl<'de> DeserializeStrict<'de> for PatchRowsRequest {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "attempt")]
#[serde(default)]
attempt: Strict<Option<Uuid>>,
#[serde(rename = "base")]
base: Strict<Uuid>,
#[serde(rename = "rowIdColumn")]
row_id_column: Strict<String>,
#[serde(rename = "schemaChanges")]
#[serde(default)]
schema_changes: Strict<Option<Vec<SchemaChange>>>,
#[serde(rename = "table")]
table: Strict<TableBinding>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
attempt: wire.attempt.0,
base: wire.base.0,
row_id_column: wire.row_id_column.0,
schema_changes: wire.schema_changes.0,
table: wire.table.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct PlanChangesRequest {
#[serde(rename = "columns")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub columns: Option<Vec<String>>,
#[serde(rename = "from")]
pub from: Uuid,
#[serde(rename = "storage")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub storage: Option<StorageBinding>,
#[serde(rename = "table")]
pub table: Uuid,
#[serde(rename = "to")]
pub to: Uuid,
}
impl<'de> DeserializeStrict<'de> for PlanChangesRequest {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "columns")]
#[serde(default)]
columns: Strict<Option<Vec<String>>>,
#[serde(rename = "from")]
from: Strict<Uuid>,
#[serde(rename = "storage")]
#[serde(default)]
storage: Strict<Option<StorageBinding>>,
#[serde(rename = "table")]
table: Strict<Uuid>,
#[serde(rename = "to")]
to: Strict<Uuid>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
columns: wire.columns.0,
from: wire.from.0,
storage: wire.storage.0,
table: wire.table.0,
to: wire.to.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct PlanScanRequest {
#[serde(rename = "scan")]
pub scan: Scan,
#[serde(rename = "storage")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub storage: Option<StorageBinding>,
}
impl<'de> DeserializeStrict<'de> for PlanScanRequest {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "scan")]
scan: Strict<Scan>,
#[serde(rename = "storage")]
#[serde(default)]
storage: Strict<Option<StorageBinding>>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
scan: wire.scan.0,
storage: wire.storage.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct PlannedSplit {
#[serde(rename = "estimatedBytes")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub estimated_bytes: Option<SafeUnsignedLong>,
#[serde(rename = "estimatedRows")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub estimated_rows: Option<SafeUnsignedLong>,
#[serde(rename = "fragmentId")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub fragment_id: Option<Uuid>,
#[serde(rename = "ordering")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ordering: Option<Vec<SortColumn>>,
#[serde(rename = "split")]
pub split: Split,
}
impl<'de> DeserializeStrict<'de> for PlannedSplit {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "estimatedBytes")]
#[serde(default)]
estimated_bytes: Strict<Option<SafeUnsignedLong>>,
#[serde(rename = "estimatedRows")]
#[serde(default)]
estimated_rows: Strict<Option<SafeUnsignedLong>>,
#[serde(rename = "fragmentId")]
#[serde(default)]
fragment_id: Strict<Option<Uuid>>,
#[serde(rename = "ordering")]
#[serde(default)]
ordering: Strict<Option<Vec<SortColumn>>>,
#[serde(rename = "split")]
split: Strict<Split>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
estimated_bytes: wire.estimated_bytes.0,
estimated_rows: wire.estimated_rows.0,
fragment_id: wire.fragment_id.0,
ordering: wire.ordering.0,
split: wire.split.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct PreparedWriteReceipt {
#[serde(rename = "baseVersion")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub base_version: Option<Uuid>,
#[serde(rename = "resourceId")]
pub resource_id: Uuid,
#[serde(rename = "sequence")]
pub sequence: SafeUnsignedLong,
#[serde(rename = "versionId")]
pub version_id: Uuid,
}
impl<'de> DeserializeStrict<'de> for PreparedWriteReceipt {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "baseVersion")]
#[serde(default)]
base_version: Strict<Option<Uuid>>,
#[serde(rename = "resourceId")]
resource_id: Strict<Uuid>,
#[serde(rename = "sequence")]
sequence: Strict<SafeUnsignedLong>,
#[serde(rename = "versionId")]
version_id: Strict<Uuid>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
base_version: wire.base_version.0,
resource_id: wire.resource_id.0,
sequence: wire.sequence.0,
version_id: wire.version_id.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct ReadBlobRequest {
#[serde(rename = "blob")]
pub blob: Blob,
#[serde(rename = "range")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub range: Option<ByteRange>,
#[serde(rename = "storage")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub storage: Option<StorageBinding>,
}
impl<'de> DeserializeStrict<'de> for ReadBlobRequest {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "blob")]
blob: Strict<Blob>,
#[serde(rename = "range")]
#[serde(default)]
range: Strict<Option<ByteRange>>,
#[serde(rename = "storage")]
#[serde(default)]
storage: Strict<Option<StorageBinding>>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
blob: wire.blob.0,
range: wire.range.0,
storage: wire.storage.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct ReadLegacyTableRequest {
#[serde(rename = "filters")]
pub filters: Vec<LegacyFilter>,
#[serde(rename = "limit")]
pub limit: u32,
#[serde(rename = "offset")]
pub offset: u32,
#[serde(rename = "scope")]
pub scope: String,
#[serde(rename = "snapshot")]
pub snapshot: LegacyTableSnapshot,
#[serde(rename = "storage")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub storage: Option<StorageBinding>,
}
impl<'de> DeserializeStrict<'de> for ReadLegacyTableRequest {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "filters")]
filters: Strict<Vec<LegacyFilter>>,
#[serde(rename = "limit")]
limit: Strict<u32>,
#[serde(rename = "offset")]
offset: Strict<u32>,
#[serde(rename = "scope")]
scope: Strict<String>,
#[serde(rename = "snapshot")]
snapshot: Strict<LegacyTableSnapshot>,
#[serde(rename = "storage")]
#[serde(default)]
storage: Strict<Option<StorageBinding>>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
filters: wire.filters.0,
limit: wire.limit.0,
offset: wire.offset.0,
scope: wire.scope.0,
snapshot: wire.snapshot.0,
storage: wire.storage.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ReadScanRequest {
#[serde(rename = "scan")]
pub scan: Scan,
#[serde(rename = "split")]
pub split: Split,
#[serde(rename = "storage")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub storage: Option<StorageBinding>,
}
impl<'de> DeserializeStrict<'de> for ReadScanRequest {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "scan")]
scan: Strict<Scan>,
#[serde(rename = "split")]
split: Strict<Split>,
#[serde(rename = "storage")]
#[serde(default)]
storage: Strict<Option<StorageBinding>>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
scan: wire.scan.0,
split: wire.split.0,
storage: wire.storage.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct RenameColumn {
#[serde(rename = "name")]
pub name: String,
#[serde(rename = "path")]
pub path: Vec<String>,
}
impl<'de> DeserializeStrict<'de> for RenameColumn {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "name")]
name: Strict<String>,
#[serde(rename = "path")]
path: Strict<Vec<String>>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
name: wire.name.0,
path: wire.path.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct RetainedFragment {
#[serde(rename = "deleted")]
pub deleted: Vec<RowIdRange>,
#[serde(rename = "patched")]
pub patched: Vec<RowIdRange>,
}
impl<'de> DeserializeStrict<'de> for RetainedFragment {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "deleted")]
deleted: Strict<Vec<RowIdRange>>,
#[serde(rename = "patched")]
patched: Strict<Vec<RowIdRange>>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
deleted: wire.deleted.0,
patched: wire.patched.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct RowIdRange {
#[serde(rename = "end")]
pub end: SafeUnsignedLong,
#[serde(rename = "start")]
pub start: SafeUnsignedLong,
}
impl<'de> DeserializeStrict<'de> for RowIdRange {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "end")]
end: Strict<SafeUnsignedLong>,
#[serde(rename = "start")]
start: Strict<SafeUnsignedLong>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
end: wire.end.0,
start: wire.start.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct RowRange {
#[serde(rename = "end")]
pub end: SafeUnsignedLong,
#[serde(rename = "start")]
pub start: SafeUnsignedLong,
}
impl<'de> DeserializeStrict<'de> for RowRange {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "end")]
end: Strict<SafeUnsignedLong>,
#[serde(rename = "start")]
start: Strict<SafeUnsignedLong>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
end: wire.end.0,
start: wire.start.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Scan {
#[serde(rename = "batchRows")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub batch_rows: Option<u32>,
#[serde(rename = "collectMetrics")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub collect_metrics: Option<bool>,
#[serde(rename = "columns")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub columns: Option<Vec<String>>,
#[serde(rename = "emit")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub emit: Option<Emit>,
#[serde(rename = "filter")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub filter: Option<Expression>,
#[serde(rename = "limit")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<SafeUnsignedLong>,
#[serde(rename = "projection")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub projection: Option<Vec<NamedExpression>>,
#[serde(rename = "rowIdColumn")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub row_id_column: Option<String>,
#[serde(rename = "rowIds")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub row_ids: Option<Vec<RowIdRange>>,
#[serde(rename = "rowRange")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub row_range: Option<RowRange>,
#[serde(rename = "table")]
pub table: TableVersion,
}
impl<'de> DeserializeStrict<'de> for Scan {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "batchRows")]
#[serde(default)]
batch_rows: Strict<Option<u32>>,
#[serde(rename = "collectMetrics")]
#[serde(default)]
collect_metrics: Strict<Option<bool>>,
#[serde(rename = "columns")]
#[serde(default)]
columns: Strict<Option<Vec<String>>>,
#[serde(rename = "emit")]
#[serde(default)]
emit: Strict<Option<Emit>>,
#[serde(rename = "filter")]
#[serde(default)]
filter: Strict<Option<Expression>>,
#[serde(rename = "limit")]
#[serde(default)]
limit: Strict<Option<SafeUnsignedLong>>,
#[serde(rename = "projection")]
#[serde(default)]
projection: Strict<Option<Vec<NamedExpression>>>,
#[serde(rename = "rowIdColumn")]
#[serde(default)]
row_id_column: Strict<Option<String>>,
#[serde(rename = "rowIds")]
#[serde(default)]
row_ids: Strict<Option<Vec<RowIdRange>>>,
#[serde(rename = "rowRange")]
#[serde(default)]
row_range: Strict<Option<RowRange>>,
#[serde(rename = "table")]
table: Strict<TableVersion>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
batch_rows: wire.batch_rows.0,
collect_metrics: wire.collect_metrics.0,
columns: wire.columns.0,
emit: wire.emit.0,
filter: wire.filter.0,
limit: wire.limit.0,
projection: wire.projection.0,
row_id_column: wire.row_id_column.0,
row_ids: wire.row_ids.0,
row_range: wire.row_range.0,
table: wire.table.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct ScanInfo {
#[serde(rename = "filterClauses")]
pub filter_clauses: Vec<FilterClause>,
#[serde(rename = "schema")]
pub schema: ArrowSchema,
#[serde(rename = "statistics")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub statistics: Option<ScanStatistics>,
#[serde(rename = "writeLayout")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub write_layout: Option<WriteLayout>,
}
impl<'de> DeserializeStrict<'de> for ScanInfo {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "filterClauses")]
filter_clauses: Strict<Vec<FilterClause>>,
#[serde(rename = "schema")]
schema: Strict<ArrowSchema>,
#[serde(rename = "statistics")]
#[serde(default)]
statistics: Strict<Option<ScanStatistics>>,
#[serde(rename = "writeLayout")]
#[serde(default)]
write_layout: Strict<Option<WriteLayout>>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
filter_clauses: wire.filter_clauses.0,
schema: wire.schema.0,
statistics: wire.statistics.0,
write_layout: wire.write_layout.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct ScanMetricsSnapshot {
#[serde(rename = "filesConsidered")]
pub files_considered: SafeUnsignedLong,
#[serde(rename = "filesPruned")]
pub files_pruned: SafeUnsignedLong,
#[serde(rename = "fragmentsConsidered")]
pub fragments_considered: SafeUnsignedLong,
#[serde(rename = "fragmentsPruned")]
pub fragments_pruned: SafeUnsignedLong,
#[serde(rename = "outputRows")]
pub output_rows: SafeUnsignedLong,
#[serde(rename = "storage")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub storage: Option<StorageCounters>,
#[serde(rename = "windows")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub windows: Option<WindowCounters>,
}
impl<'de> DeserializeStrict<'de> for ScanMetricsSnapshot {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "filesConsidered")]
files_considered: Strict<SafeUnsignedLong>,
#[serde(rename = "filesPruned")]
files_pruned: Strict<SafeUnsignedLong>,
#[serde(rename = "fragmentsConsidered")]
fragments_considered: Strict<SafeUnsignedLong>,
#[serde(rename = "fragmentsPruned")]
fragments_pruned: Strict<SafeUnsignedLong>,
#[serde(rename = "outputRows")]
output_rows: Strict<SafeUnsignedLong>,
#[serde(rename = "storage")]
#[serde(default)]
storage: Strict<Option<StorageCounters>>,
#[serde(rename = "windows")]
#[serde(default)]
windows: Strict<Option<WindowCounters>>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
files_considered: wire.files_considered.0,
files_pruned: wire.files_pruned.0,
fragments_considered: wire.fragments_considered.0,
fragments_pruned: wire.fragments_pruned.0,
output_rows: wire.output_rows.0,
storage: wire.storage.0,
windows: wire.windows.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct ScanPlan {
#[serde(rename = "info")]
pub info: ScanInfo,
#[serde(rename = "metrics")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub metrics: Option<ScanMetricsSnapshot>,
#[serde(rename = "splits")]
pub splits: Vec<PlannedSplit>,
}
impl<'de> DeserializeStrict<'de> for ScanPlan {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "info")]
info: Strict<ScanInfo>,
#[serde(rename = "metrics")]
#[serde(default)]
metrics: Strict<Option<ScanMetricsSnapshot>>,
#[serde(rename = "splits")]
splits: Strict<Vec<PlannedSplit>>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
info: wire.info.0,
metrics: wire.metrics.0,
splits: wire.splits.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct ScanStatistics {
#[serde(rename = "columns")]
pub columns: Vec<ColumnStatistics>,
#[serde(rename = "rowCount")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub row_count: Option<SafeUnsignedLong>,
#[serde(rename = "rowCountExact")]
pub row_count_exact: bool,
#[serde(rename = "storedBytes")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub stored_bytes: Option<SafeUnsignedLong>,
}
impl<'de> DeserializeStrict<'de> for ScanStatistics {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "columns")]
columns: Strict<Vec<ColumnStatistics>>,
#[serde(rename = "rowCount")]
#[serde(default)]
row_count: Strict<Option<SafeUnsignedLong>>,
#[serde(rename = "rowCountExact")]
row_count_exact: Strict<bool>,
#[serde(rename = "storedBytes")]
#[serde(default)]
stored_bytes: Strict<Option<SafeUnsignedLong>>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
columns: wire.columns.0,
row_count: wire.row_count.0,
row_count_exact: wire.row_count_exact.0,
stored_bytes: wire.stored_bytes.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum SchemaChange {
AddColumn(AddColumn),
DropColumn(ColumnPath),
MoveColumn(MoveColumn),
RenameColumn(RenameColumn),
SetNullable(ColumnPath),
WidenType(WidenType),
Unknown { tag: String, value: Value },
}
impl Serialize for SchemaChange {
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
match self {
Self::AddColumn(value) => {
let mut object = serde_json::Map::new();
object.insert("type".into(), Value::String("addColumn".into()));
object.insert(
"addColumn".into(),
serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
);
Value::Object(object).serialize(serializer)
}
Self::DropColumn(value) => {
let mut object = serde_json::Map::new();
object.insert("type".into(), Value::String("dropColumn".into()));
object.insert(
"dropColumn".into(),
serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
);
Value::Object(object).serialize(serializer)
}
Self::MoveColumn(value) => {
let mut object = serde_json::Map::new();
object.insert("type".into(), Value::String("moveColumn".into()));
object.insert(
"moveColumn".into(),
serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
);
Value::Object(object).serialize(serializer)
}
Self::RenameColumn(value) => {
let mut object = serde_json::Map::new();
object.insert("type".into(), Value::String("renameColumn".into()));
object.insert(
"renameColumn".into(),
serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
);
Value::Object(object).serialize(serializer)
}
Self::SetNullable(value) => {
let mut object = serde_json::Map::new();
object.insert("type".into(), Value::String("setNullable".into()));
object.insert(
"setNullable".into(),
serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
);
Value::Object(object).serialize(serializer)
}
Self::WidenType(value) => {
let mut object = serde_json::Map::new();
object.insert("type".into(), Value::String("widenType".into()));
object.insert(
"widenType".into(),
serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
);
Value::Object(object).serialize(serializer)
}
Self::Unknown { tag, value } => {
if value.get("type").and_then(Value::as_str) != Some(tag.as_str()) {
return Err(serde::ser::Error::custom(
"unknown union discriminator mismatch",
));
}
value.serialize(serializer)
}
}
}
}
impl<'de> Deserialize<'de> for SchemaChange {
fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
let value = Value::deserialize(deserializer)?;
let tag = value
.get("type")
.and_then(Value::as_str)
.ok_or_else(|| serde::de::Error::custom("union requires type"))?;
match tag {
"addColumn" => Ok(Self::AddColumn(
serde_json::from_value(
value
.get("addColumn")
.cloned()
.ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
)
.map_err(serde::de::Error::custom)?,
)),
"dropColumn" => Ok(Self::DropColumn(
serde_json::from_value(
value
.get("dropColumn")
.cloned()
.ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
)
.map_err(serde::de::Error::custom)?,
)),
"moveColumn" => Ok(Self::MoveColumn(
serde_json::from_value(
value
.get("moveColumn")
.cloned()
.ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
)
.map_err(serde::de::Error::custom)?,
)),
"renameColumn" => Ok(Self::RenameColumn(
serde_json::from_value(
value
.get("renameColumn")
.cloned()
.ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
)
.map_err(serde::de::Error::custom)?,
)),
"setNullable" => Ok(Self::SetNullable(
serde_json::from_value(
value
.get("setNullable")
.cloned()
.ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
)
.map_err(serde::de::Error::custom)?,
)),
"widenType" => Ok(Self::WidenType(
serde_json::from_value(
value
.get("widenType")
.cloned()
.ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
)
.map_err(serde::de::Error::custom)?,
)),
tag => Ok(Self::Unknown {
tag: tag.to_owned(),
value,
}),
}
}
}
impl<'de> DeserializeStrict<'de> for SchemaChange {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
enum __Tag0 {
#[serde(rename = "addColumn")]
Value,
}
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Arm0 {
#[serde(rename = "type")]
_tag: __Tag0,
#[serde(rename = "addColumn")]
value: Strict<AddColumn>,
}
#[derive(Deserialize)]
enum __Tag1 {
#[serde(rename = "dropColumn")]
Value,
}
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Arm1 {
#[serde(rename = "type")]
_tag: __Tag1,
#[serde(rename = "dropColumn")]
value: Strict<ColumnPath>,
}
#[derive(Deserialize)]
enum __Tag2 {
#[serde(rename = "moveColumn")]
Value,
}
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Arm2 {
#[serde(rename = "type")]
_tag: __Tag2,
#[serde(rename = "moveColumn")]
value: Strict<MoveColumn>,
}
#[derive(Deserialize)]
enum __Tag3 {
#[serde(rename = "renameColumn")]
Value,
}
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Arm3 {
#[serde(rename = "type")]
_tag: __Tag3,
#[serde(rename = "renameColumn")]
value: Strict<RenameColumn>,
}
#[derive(Deserialize)]
enum __Tag4 {
#[serde(rename = "setNullable")]
Value,
}
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Arm4 {
#[serde(rename = "type")]
_tag: __Tag4,
#[serde(rename = "setNullable")]
value: Strict<ColumnPath>,
}
#[derive(Deserialize)]
enum __Tag5 {
#[serde(rename = "widenType")]
Value,
}
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Arm5 {
#[serde(rename = "type")]
_tag: __Tag5,
#[serde(rename = "widenType")]
value: Strict<WidenType>,
}
#[derive(Deserialize)]
#[serde(untagged)]
enum __Known {
AddColumn(Box<__Arm0>),
DropColumn(Box<__Arm1>),
MoveColumn(Box<__Arm2>),
RenameColumn(Box<__Arm3>),
SetNullable(Box<__Arm4>),
WidenType(Box<__Arm5>),
}
Ok(match __Known::deserialize(deserializer)? {
__Known::AddColumn(arm) => Self::AddColumn(arm.value.0),
__Known::DropColumn(arm) => Self::DropColumn(arm.value.0),
__Known::MoveColumn(arm) => Self::MoveColumn(arm.value.0),
__Known::RenameColumn(arm) => Self::RenameColumn(arm.value.0),
__Known::SetNullable(arm) => Self::SetNullable(arm.value.0),
__Known::WidenType(arm) => Self::WidenType(arm.value.0),
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct SortColumn {
#[serde(rename = "descending")]
pub descending: bool,
#[serde(rename = "nullsFirst")]
pub nulls_first: bool,
#[serde(rename = "path")]
pub path: Vec<String>,
#[serde(rename = "transform")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub transform: Option<String>,
}
impl<'de> DeserializeStrict<'de> for SortColumn {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "descending")]
descending: Strict<bool>,
#[serde(rename = "nullsFirst")]
nulls_first: Strict<bool>,
#[serde(rename = "path")]
path: Strict<Vec<String>>,
#[serde(rename = "transform")]
#[serde(default)]
transform: Strict<Option<String>>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
descending: wire.descending.0,
nulls_first: wire.nulls_first.0,
path: wire.path.0,
transform: wire.transform.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct SortKey {
#[serde(rename = "column")]
pub column: String,
#[serde(rename = "descending")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub descending: Option<bool>,
#[serde(rename = "nullsFirst")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub nulls_first: Option<bool>,
}
impl<'de> DeserializeStrict<'de> for SortKey {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "column")]
column: Strict<String>,
#[serde(rename = "descending")]
#[serde(default)]
descending: Strict<Option<bool>>,
#[serde(rename = "nullsFirst")]
#[serde(default)]
nulls_first: Strict<Option<bool>>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
column: wire.column.0,
descending: wire.descending.0,
nulls_first: wire.nulls_first.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct Split {
#[serde(rename = "fragment")]
pub fragment: SafeUnsignedLong,
#[serde(rename = "rows")]
pub rows: RowRange,
}
impl<'de> DeserializeStrict<'de> for Split {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "fragment")]
fragment: Strict<SafeUnsignedLong>,
#[serde(rename = "rows")]
rows: Strict<RowRange>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
fragment: wire.fragment.0,
rows: wire.rows.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct SplitTake {
#[serde(rename = "positions")]
pub positions: Vec<SafeUnsignedLong>,
#[serde(rename = "split")]
pub split: Split,
}
impl<'de> DeserializeStrict<'de> for SplitTake {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "positions")]
positions: Strict<Vec<SafeUnsignedLong>>,
#[serde(rename = "split")]
split: Strict<Split>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
positions: wire.positions.0,
split: wire.split.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct StartBlobUploadRequest {
#[serde(rename = "attempt")]
pub attempt: Uuid,
#[serde(rename = "mediaType")]
pub media_type: String,
#[serde(rename = "partBytes")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub part_bytes: Option<SafeUnsignedLong>,
#[serde(rename = "table")]
pub table: TableBinding,
}
impl<'de> DeserializeStrict<'de> for StartBlobUploadRequest {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "attempt")]
attempt: Strict<Uuid>,
#[serde(rename = "mediaType")]
media_type: Strict<String>,
#[serde(rename = "partBytes")]
#[serde(default)]
part_bytes: Strict<Option<SafeUnsignedLong>>,
#[serde(rename = "table")]
table: Strict<TableBinding>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
attempt: wire.attempt.0,
media_type: wire.media_type.0,
part_bytes: wire.part_bytes.0,
table: wire.table.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct StatBlobRequest {
#[serde(rename = "blob")]
pub blob: Blob,
#[serde(rename = "storage")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub storage: Option<StorageBinding>,
}
impl<'de> DeserializeStrict<'de> for StatBlobRequest {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "blob")]
blob: Strict<Blob>,
#[serde(rename = "storage")]
#[serde(default)]
storage: Strict<Option<StorageBinding>>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
blob: wire.blob.0,
storage: wire.storage.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct StorageBinding {
#[serde(rename = "credential")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub credential: Option<StorageCredential>,
#[serde(rename = "rootAlias")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub root_alias: Option<String>,
#[serde(rename = "rootUri")]
pub root_uri: String,
}
impl<'de> DeserializeStrict<'de> for StorageBinding {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "credential")]
#[serde(default)]
credential: Strict<Option<StorageCredential>>,
#[serde(rename = "rootAlias")]
#[serde(default)]
root_alias: Strict<Option<String>>,
#[serde(rename = "rootUri")]
root_uri: Strict<String>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
credential: wire.credential.0,
root_alias: wire.root_alias.0,
root_uri: wire.root_uri.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct StorageCounters {
#[serde(rename = "bytes")]
pub bytes: SafeUnsignedLong,
#[serde(rename = "readTimeNs")]
pub read_time_ns: SafeUnsignedLong,
#[serde(rename = "requests")]
pub requests: SafeUnsignedLong,
#[serde(rename = "scope")]
pub scope: StorageScope,
}
impl<'de> DeserializeStrict<'de> for StorageCounters {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "bytes")]
bytes: Strict<SafeUnsignedLong>,
#[serde(rename = "readTimeNs")]
read_time_ns: Strict<SafeUnsignedLong>,
#[serde(rename = "requests")]
requests: Strict<SafeUnsignedLong>,
#[serde(rename = "scope")]
scope: Strict<StorageScope>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
bytes: wire.bytes.0,
read_time_ns: wire.read_time_ns.0,
requests: wire.requests.0,
scope: wire.scope.0,
})
}
}
#[derive(Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(transparent)]
pub struct StorageCredential(pub String);
impl std::fmt::Debug for StorageCredential {
fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
formatter.write_str("StorageCredential(<redacted>)")
}
}
impl<'de> DeserializeStrict<'de> for StorageCredential {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
Ok(Self(Strict::<String>::deserialize(deserializer)?.0))
}
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum StorageScope {
Complete,
Direct,
Unknown(String),
}
impl Serialize for StorageScope {
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
serializer.serialize_str(match self {
Self::Complete => "complete",
Self::Direct => "direct",
Self::Unknown(value) => value,
})
}
}
impl<'de> Deserialize<'de> for StorageScope {
fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
Ok(match String::deserialize(deserializer)?.as_str() {
"complete" => Self::Complete,
"direct" => Self::Direct,
value => Self::Unknown(value.to_owned()),
})
}
}
impl<'de> DeserializeStrict<'de> for StorageScope {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
enum __Known {
#[serde(rename = "complete")]
Complete,
#[serde(rename = "direct")]
Direct,
}
Ok(match __Known::deserialize(deserializer)? {
__Known::Complete => Self::Complete,
__Known::Direct => Self::Direct,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct SuccessorBase {
#[serde(rename = "versionId")]
pub version_id: Uuid,
}
impl<'de> DeserializeStrict<'de> for SuccessorBase {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "versionId")]
version_id: Strict<Uuid>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
version_id: wire.version_id.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct TableBinding {
#[serde(rename = "storage")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub storage: Option<StorageBinding>,
#[serde(rename = "tableId")]
pub table_id: Uuid,
}
impl<'de> DeserializeStrict<'de> for TableBinding {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "storage")]
#[serde(default)]
storage: Strict<Option<StorageBinding>>,
#[serde(rename = "tableId")]
table_id: Strict<Uuid>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
storage: wire.storage.0,
table_id: wire.table_id.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct TableVersion {
#[serde(rename = "resourceId")]
pub resource_id: Uuid,
#[serde(rename = "versionId")]
pub version_id: Uuid,
}
impl<'de> DeserializeStrict<'de> for TableVersion {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "resourceId")]
resource_id: Strict<Uuid>,
#[serde(rename = "versionId")]
version_id: Strict<Uuid>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
resource_id: wire.resource_id.0,
version_id: wire.version_id.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct TakeRowsRequest {
#[serde(rename = "scan")]
pub scan: Scan,
#[serde(rename = "storage")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub storage: Option<StorageBinding>,
#[serde(rename = "takes")]
pub takes: Vec<SplitTake>,
}
impl<'de> DeserializeStrict<'de> for TakeRowsRequest {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "scan")]
scan: Strict<Scan>,
#[serde(rename = "storage")]
#[serde(default)]
storage: Strict<Option<StorageBinding>>,
#[serde(rename = "takes")]
takes: Strict<Vec<SplitTake>>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
scan: wire.scan.0,
storage: wire.storage.0,
takes: wire.takes.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct TopK {
#[serde(rename = "k")]
pub k: u32,
#[serde(rename = "keys")]
pub keys: Vec<SortKey>,
}
impl<'de> DeserializeStrict<'de> for TopK {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "k")]
k: Strict<u32>,
#[serde(rename = "keys")]
keys: Strict<Vec<SortKey>>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
k: wire.k.0,
keys: wire.keys.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct UploadBlobPartRequest {
#[serde(rename = "part")]
pub part: u32,
#[serde(rename = "storage")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub storage: Option<StorageBinding>,
#[serde(rename = "upload")]
pub upload: BlobUpload,
}
impl<'de> DeserializeStrict<'de> for UploadBlobPartRequest {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "part")]
part: Strict<u32>,
#[serde(rename = "storage")]
#[serde(default)]
storage: Strict<Option<StorageBinding>>,
#[serde(rename = "upload")]
upload: Strict<BlobUpload>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
part: wire.part.0,
storage: wire.storage.0,
upload: wire.upload.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct WidenType {
#[serde(rename = "dataType")]
pub data_type: ArrowDataType,
#[serde(rename = "path")]
pub path: Vec<String>,
}
impl<'de> DeserializeStrict<'de> for WidenType {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "dataType")]
data_type: Strict<ArrowDataType>,
#[serde(rename = "path")]
path: Strict<Vec<String>>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
data_type: wire.data_type.0,
path: wire.path.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct WindowCounters {
#[serde(rename = "prunedStatistics")]
pub pruned_statistics: SafeUnsignedLong,
#[serde(rename = "visited")]
pub visited: SafeUnsignedLong,
}
impl<'de> DeserializeStrict<'de> for WindowCounters {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "prunedStatistics")]
pruned_statistics: Strict<SafeUnsignedLong>,
#[serde(rename = "visited")]
visited: Strict<SafeUnsignedLong>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
pruned_statistics: wire.pruned_statistics.0,
visited: wire.visited.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum WriteBase {
Append(SuccessorBase),
Delete(DeleteBase),
Edit(EditBase),
Genesis(GenesisBase),
Overwrite(SuccessorBase),
Unknown { tag: String, value: Value },
}
impl Serialize for WriteBase {
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
match self {
Self::Append(value) => {
let mut object = serde_json::Map::new();
object.insert("type".into(), Value::String("append".into()));
object.insert(
"append".into(),
serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
);
Value::Object(object).serialize(serializer)
}
Self::Delete(value) => {
let mut object = serde_json::Map::new();
object.insert("type".into(), Value::String("delete".into()));
object.insert(
"delete".into(),
serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
);
Value::Object(object).serialize(serializer)
}
Self::Edit(value) => {
let mut object = serde_json::Map::new();
object.insert("type".into(), Value::String("edit".into()));
object.insert(
"edit".into(),
serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
);
Value::Object(object).serialize(serializer)
}
Self::Genesis(value) => {
let mut object = serde_json::Map::new();
object.insert("type".into(), Value::String("genesis".into()));
object.insert(
"genesis".into(),
serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
);
Value::Object(object).serialize(serializer)
}
Self::Overwrite(value) => {
let mut object = serde_json::Map::new();
object.insert("type".into(), Value::String("overwrite".into()));
object.insert(
"overwrite".into(),
serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
);
Value::Object(object).serialize(serializer)
}
Self::Unknown { tag, value } => {
if value.get("type").and_then(Value::as_str) != Some(tag.as_str()) {
return Err(serde::ser::Error::custom(
"unknown union discriminator mismatch",
));
}
value.serialize(serializer)
}
}
}
}
impl<'de> Deserialize<'de> for WriteBase {
fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
let value = Value::deserialize(deserializer)?;
let tag = value
.get("type")
.and_then(Value::as_str)
.ok_or_else(|| serde::de::Error::custom("union requires type"))?;
match tag {
"append" => Ok(Self::Append(
serde_json::from_value(
value
.get("append")
.cloned()
.ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
)
.map_err(serde::de::Error::custom)?,
)),
"delete" => Ok(Self::Delete(
serde_json::from_value(
value
.get("delete")
.cloned()
.ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
)
.map_err(serde::de::Error::custom)?,
)),
"edit" => Ok(Self::Edit(
serde_json::from_value(
value
.get("edit")
.cloned()
.ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
)
.map_err(serde::de::Error::custom)?,
)),
"genesis" => Ok(Self::Genesis(
serde_json::from_value(
value
.get("genesis")
.cloned()
.ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
)
.map_err(serde::de::Error::custom)?,
)),
"overwrite" => Ok(Self::Overwrite(
serde_json::from_value(
value
.get("overwrite")
.cloned()
.ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
)
.map_err(serde::de::Error::custom)?,
)),
tag => Ok(Self::Unknown {
tag: tag.to_owned(),
value,
}),
}
}
}
impl<'de> DeserializeStrict<'de> for WriteBase {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
enum __Tag0 {
#[serde(rename = "append")]
Value,
}
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Arm0 {
#[serde(rename = "type")]
_tag: __Tag0,
#[serde(rename = "append")]
value: Strict<SuccessorBase>,
}
#[derive(Deserialize)]
enum __Tag1 {
#[serde(rename = "delete")]
Value,
}
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Arm1 {
#[serde(rename = "type")]
_tag: __Tag1,
#[serde(rename = "delete")]
value: Strict<DeleteBase>,
}
#[derive(Deserialize)]
enum __Tag2 {
#[serde(rename = "edit")]
Value,
}
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Arm2 {
#[serde(rename = "type")]
_tag: __Tag2,
#[serde(rename = "edit")]
value: Strict<EditBase>,
}
#[derive(Deserialize)]
enum __Tag3 {
#[serde(rename = "genesis")]
Value,
}
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Arm3 {
#[serde(rename = "type")]
_tag: __Tag3,
#[serde(rename = "genesis")]
value: Strict<GenesisBase>,
}
#[derive(Deserialize)]
enum __Tag4 {
#[serde(rename = "overwrite")]
Value,
}
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Arm4 {
#[serde(rename = "type")]
_tag: __Tag4,
#[serde(rename = "overwrite")]
value: Strict<SuccessorBase>,
}
#[derive(Deserialize)]
#[serde(untagged)]
enum __Known {
Append(Box<__Arm0>),
Delete(Box<__Arm1>),
Edit(Box<__Arm2>),
Genesis(Box<__Arm3>),
Overwrite(Box<__Arm4>),
}
Ok(match __Known::deserialize(deserializer)? {
__Known::Append(arm) => Self::Append(arm.value.0),
__Known::Delete(arm) => Self::Delete(arm.value.0),
__Known::Edit(arm) => Self::Edit(arm.value.0),
__Known::Genesis(arm) => Self::Genesis(arm.value.0),
__Known::Overwrite(arm) => Self::Overwrite(arm.value.0),
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct WriteBlobRequest {
#[serde(rename = "maxBytes")]
pub max_bytes: SafeUnsignedLong,
#[serde(rename = "mediaType")]
pub media_type: String,
#[serde(rename = "table")]
pub table: TableBinding,
}
impl<'de> DeserializeStrict<'de> for WriteBlobRequest {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "maxBytes")]
max_bytes: Strict<SafeUnsignedLong>,
#[serde(rename = "mediaType")]
media_type: Strict<String>,
#[serde(rename = "table")]
table: Strict<TableBinding>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
max_bytes: wire.max_bytes.0,
media_type: wire.media_type.0,
table: wire.table.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct WriteLayout {
#[serde(rename = "ordering")]
pub ordering: Vec<SortColumn>,
#[serde(rename = "partitioning")]
pub partitioning: Vec<PartitionColumn>,
}
impl<'de> DeserializeStrict<'de> for WriteLayout {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "ordering")]
ordering: Strict<Vec<SortColumn>>,
#[serde(rename = "partitioning")]
partitioning: Strict<Vec<PartitionColumn>>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
ordering: wire.ordering.0,
partitioning: wire.partitioning.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct WriteProperties {
#[serde(rename = "ordering")]
pub ordering: Vec<SortColumn>,
}
impl<'de> DeserializeStrict<'de> for WriteProperties {
fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
#[derive(Deserialize)]
#[serde(deny_unknown_fields)]
struct __Wire {
#[serde(rename = "ordering")]
ordering: Strict<Vec<SortColumn>>,
}
let wire = __Wire::deserialize(deserializer)?;
Ok(Self {
ordering: wire.ordering.0,
})
}
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum ScandalError {
BudgetExceeded { message: String },
Conflict { message: String },
Internal { message: String },
InvalidArgument { message: String },
NotFound { resource: String },
PermissionDenied { operation: String, resource: String },
StorageUnavailable { message: String },
Unauthenticated { message: String },
Unavailable { message: String },
}
impl ScandalError {
pub fn status(&self) -> u16 {
match self {
Self::BudgetExceeded { .. } => 400,
Self::Conflict { .. } => 409,
Self::Internal { .. } => 500,
Self::InvalidArgument { .. } => 400,
Self::NotFound { .. } => 404,
Self::PermissionDenied { .. } => 403,
Self::StorageUnavailable { .. } => 500,
Self::Unauthenticated { .. } => 401,
Self::Unavailable { .. } => 503,
}
}
pub fn envelope(&self, instance: String) -> ErrorEnvelope {
match self {
Self::BudgetExceeded { message } => {
let mut envelope =
ErrorEnvelope::new("INVALID_ARGUMENT", "Scandal:BudgetExceeded", instance);
envelope
.parameters
.insert("message".into(), message.to_string());
envelope
}
Self::Conflict { message } => {
let mut envelope = ErrorEnvelope::new("CONFLICT", "Scandal:Conflict", instance);
envelope
.parameters
.insert("message".into(), message.to_string());
envelope
}
Self::Internal { message } => {
let mut envelope = ErrorEnvelope::new("INTERNAL", "Scandal:Internal", instance);
envelope
.parameters
.insert("message".into(), message.to_string());
envelope
}
Self::InvalidArgument { message } => {
let mut envelope =
ErrorEnvelope::new("INVALID_ARGUMENT", "Scandal:InvalidArgument", instance);
envelope
.parameters
.insert("message".into(), message.to_string());
envelope
}
Self::NotFound { resource } => {
let mut envelope = ErrorEnvelope::new("NOT_FOUND", "Scandal:NotFound", instance);
envelope
.parameters
.insert("resource".into(), resource.to_string());
envelope
}
Self::PermissionDenied {
operation,
resource,
} => {
let mut envelope =
ErrorEnvelope::new("PERMISSION_DENIED", "Scandal:PermissionDenied", instance);
envelope
.parameters
.insert("operation".into(), operation.to_string());
envelope
.parameters
.insert("resource".into(), resource.to_string());
envelope
}
Self::StorageUnavailable { message } => {
let mut envelope =
ErrorEnvelope::new("INTERNAL", "Scandal:StorageUnavailable", instance);
envelope
.parameters
.insert("message".into(), message.to_string());
envelope
}
Self::Unauthenticated { message } => {
let mut envelope =
ErrorEnvelope::new("UNAUTHENTICATED", "Scandal:Unauthenticated", instance);
envelope
.parameters
.insert("message".into(), message.to_string());
envelope
}
Self::Unavailable { message } => {
let mut envelope =
ErrorEnvelope::new("UNAVAILABLE", "Scandal:Unavailable", instance);
envelope
.parameters
.insert("message".into(), message.to_string());
envelope
}
}
}
pub fn decode_envelope(envelope: &ErrorEnvelope) -> Option<Self> {
if envelope.error_instance_id.len() != 36
|| Uuid::parse_str(&envelope.error_instance_id).is_err()
{
return None;
}
match envelope.error_name.as_str() {
"Scandal:BudgetExceeded" => {
if envelope.error_code != "INVALID_ARGUMENT" {
return None;
}
let message = envelope.parameters.get("message")?.clone();
Some(Self::BudgetExceeded { message })
}
"Scandal:Conflict" => {
if envelope.error_code != "CONFLICT" {
return None;
}
let message = envelope.parameters.get("message")?.clone();
Some(Self::Conflict { message })
}
"Scandal:Internal" => {
if envelope.error_code != "INTERNAL" {
return None;
}
let message = envelope.parameters.get("message")?.clone();
Some(Self::Internal { message })
}
"Scandal:InvalidArgument" => {
if envelope.error_code != "INVALID_ARGUMENT" {
return None;
}
let message = envelope.parameters.get("message")?.clone();
Some(Self::InvalidArgument { message })
}
"Scandal:NotFound" => {
if envelope.error_code != "NOT_FOUND" {
return None;
}
let resource = envelope.parameters.get("resource")?.clone();
Some(Self::NotFound { resource })
}
"Scandal:PermissionDenied" => {
if envelope.error_code != "PERMISSION_DENIED" {
return None;
}
let operation = envelope.parameters.get("operation")?.clone();
let resource = envelope.parameters.get("resource")?.clone();
Some(Self::PermissionDenied {
operation,
resource,
})
}
"Scandal:StorageUnavailable" => {
if envelope.error_code != "INTERNAL" {
return None;
}
let message = envelope.parameters.get("message")?.clone();
Some(Self::StorageUnavailable { message })
}
"Scandal:Unauthenticated" => {
if envelope.error_code != "UNAUTHENTICATED" {
return None;
}
let message = envelope.parameters.get("message")?.clone();
Some(Self::Unauthenticated { message })
}
"Scandal:Unavailable" => {
if envelope.error_code != "UNAVAILABLE" {
return None;
}
let message = envelope.parameters.get("message")?.clone();
Some(Self::Unavailable { message })
}
_ => None,
}
}
}
impl Display for ScandalError {
fn fmt(&self, formatter: &mut Formatter<'_>) -> fmt::Result {
match self {
Self::BudgetExceeded { message } => {
write!(formatter, "Scandal:BudgetExceeded (message: {})", message)
}
Self::Conflict { message } => {
write!(formatter, "Scandal:Conflict (message: {})", message)
}
Self::Internal { message } => {
write!(formatter, "Scandal:Internal (message: {})", message)
}
Self::InvalidArgument { message } => {
write!(formatter, "Scandal:InvalidArgument (message: {})", message)
}
Self::NotFound { resource } => {
write!(formatter, "Scandal:NotFound (resource: {})", resource)
}
Self::PermissionDenied {
operation,
resource,
} => write!(
formatter,
"Scandal:PermissionDenied (operation: {}, resource: {})",
operation, resource
),
Self::StorageUnavailable { message } => write!(
formatter,
"Scandal:StorageUnavailable (message: {})",
message
),
Self::Unauthenticated { message } => {
write!(formatter, "Scandal:Unauthenticated (message: {})", message)
}
Self::Unavailable { message } => {
write!(formatter, "Scandal:Unavailable (message: {})", message)
}
}
}
}
impl StdError for ScandalError {}
impl ServiceError for ScandalError {
fn to_envelope(&self, instance: String) -> ErrorEnvelope {
Self::envelope(self, instance)
}
fn from_envelope(envelope: &ErrorEnvelope) -> Option<Self> {
Self::decode_envelope(envelope)
}
}