Skip to content

Commit

Permalink
Now Postgres has its own data types we can get rid of the unsigned ones
Browse files Browse the repository at this point in the history
Signed-off-by: itowlson <[email protected]>
  • Loading branch information
itowlson committed Oct 17, 2024
1 parent 5b0a9a4 commit d8e9b6f
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 70 deletions.
4 changes: 0 additions & 4 deletions crates/factor-outbound-pg/src/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -131,10 +131,6 @@ fn to_sql_parameter(value: &ParameterValue) -> Result<Box<dyn ToSql + Send + Syn
ParameterValue::Int16(v) => Ok(Box::new(*v)),
ParameterValue::Floating32(v) => Ok(Box::new(*v)),
ParameterValue::Floating64(v) => Ok(Box::new(*v)),
ParameterValue::Uint8(_)
| ParameterValue::Uint16(_)
| ParameterValue::Uint32(_)
| ParameterValue::Uint64(_) => Err(anyhow!("Postgres does not support unsigned integers")),
ParameterValue::Str(v) => Ok(Box::new(v.clone())),
ParameterValue::Binary(v) => Ok(Box::new(v.clone())),
ParameterValue::Date((y, mon, d)) => {
Expand Down
20 changes: 14 additions & 6 deletions crates/factor-outbound-pg/src/host.rs
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,10 @@ impl<C: Client> InstanceState<C> {
}
}

fn v2_params_to_v3(params: Vec<v2_types::ParameterValue>) -> Vec<v3::ParameterValue> {
params.into_iter().map(|p| p.into()).collect()
fn v2_params_to_v3(
params: Vec<v2_types::ParameterValue>,
) -> Result<Vec<v3::ParameterValue>, v2::Error> {
params.into_iter().map(|p| p.try_into()).collect()
}

#[async_trait]
Expand Down Expand Up @@ -184,7 +186,7 @@ impl<C: Send + Sync + Client> v2::HostConnection for InstanceState<C> {
Ok(self
.get_client(connection)
.await?
.execute(statement, v2_params_to_v3(params))
.execute(statement, v2_params_to_v3(params)?)
.await?)
}

Expand All @@ -198,7 +200,7 @@ impl<C: Send + Sync + Client> v2::HostConnection for InstanceState<C> {
Ok(self
.get_client(connection)
.await?
.query(statement, v2_params_to_v3(params))
.query(statement, v2_params_to_v3(params)?)
.await?
.into())
}
Expand All @@ -220,7 +222,10 @@ impl<C: Send + Sync + Client> v1::Host for InstanceState<C> {
delegate!(self.execute(
address,
statement,
params.into_iter().map(Into::into).collect()
params
.into_iter()
.map(TryInto::try_into)
.collect::<Result<Vec<_>, _>>()?
))
}

Expand All @@ -233,7 +238,10 @@ impl<C: Send + Sync + Client> v1::Host for InstanceState<C> {
delegate!(self.query(
address,
statement,
params.into_iter().map(Into::into).collect()
params
.into_iter()
.map(TryInto::try_into)
.collect::<Result<Vec<_>, _>>()?
))
.map(Into::into)
}
Expand Down
78 changes: 30 additions & 48 deletions crates/world/src/conversions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -62,10 +62,6 @@ mod rdbms_types {
spin::postgres::postgres::DbValue::Int16(i) => v1::rdbms_types::DbValue::Int16(i),
spin::postgres::postgres::DbValue::Int32(i) => v1::rdbms_types::DbValue::Int32(i),
spin::postgres::postgres::DbValue::Int64(i) => v1::rdbms_types::DbValue::Int64(i),
spin::postgres::postgres::DbValue::Uint8(j) => v1::rdbms_types::DbValue::Uint8(j),
spin::postgres::postgres::DbValue::Uint16(u) => v1::rdbms_types::DbValue::Uint16(u),
spin::postgres::postgres::DbValue::Uint32(u) => v1::rdbms_types::DbValue::Uint32(u),
spin::postgres::postgres::DbValue::Uint64(u) => v1::rdbms_types::DbValue::Uint64(u),
spin::postgres::postgres::DbValue::Floating32(r) => {
v1::rdbms_types::DbValue::Floating32(r)
}
Expand Down Expand Up @@ -93,10 +89,6 @@ mod rdbms_types {
spin::postgres::postgres::DbValue::Int16(i) => v2::rdbms_types::DbValue::Int16(i),
spin::postgres::postgres::DbValue::Int32(i) => v2::rdbms_types::DbValue::Int32(i),
spin::postgres::postgres::DbValue::Int64(i) => v2::rdbms_types::DbValue::Int64(i),
spin::postgres::postgres::DbValue::Uint8(j) => v2::rdbms_types::DbValue::Uint8(j),
spin::postgres::postgres::DbValue::Uint16(u) => v2::rdbms_types::DbValue::Uint16(u),
spin::postgres::postgres::DbValue::Uint32(u) => v2::rdbms_types::DbValue::Uint32(u),
spin::postgres::postgres::DbValue::Uint64(u) => v2::rdbms_types::DbValue::Uint64(u),
spin::postgres::postgres::DbValue::Floating32(r) => {
v2::rdbms_types::DbValue::Floating32(r)
}
Expand Down Expand Up @@ -124,10 +116,6 @@ mod rdbms_types {
spin::postgres::postgres::DbDataType::Int16 => v1::rdbms_types::DbDataType::Int16,
spin::postgres::postgres::DbDataType::Int32 => v1::rdbms_types::DbDataType::Int32,
spin::postgres::postgres::DbDataType::Int64 => v1::rdbms_types::DbDataType::Int64,
spin::postgres::postgres::DbDataType::Uint8 => v1::rdbms_types::DbDataType::Uint8,
spin::postgres::postgres::DbDataType::Uint16 => v1::rdbms_types::DbDataType::Uint16,
spin::postgres::postgres::DbDataType::Uint32 => v1::rdbms_types::DbDataType::Uint32,
spin::postgres::postgres::DbDataType::Uint64 => v1::rdbms_types::DbDataType::Uint64,
spin::postgres::postgres::DbDataType::Floating32 => {
v1::rdbms_types::DbDataType::Floating32
}
Expand All @@ -152,10 +140,6 @@ mod rdbms_types {
spin::postgres::postgres::DbDataType::Int16 => v2::rdbms_types::DbDataType::Int16,
spin::postgres::postgres::DbDataType::Int32 => v2::rdbms_types::DbDataType::Int32,
spin::postgres::postgres::DbDataType::Int64 => v2::rdbms_types::DbDataType::Int64,
spin::postgres::postgres::DbDataType::Uint8 => v2::rdbms_types::DbDataType::Uint8,
spin::postgres::postgres::DbDataType::Uint16 => v2::rdbms_types::DbDataType::Uint16,
spin::postgres::postgres::DbDataType::Uint32 => v2::rdbms_types::DbDataType::Uint32,
spin::postgres::postgres::DbDataType::Uint64 => v2::rdbms_types::DbDataType::Uint64,
spin::postgres::postgres::DbDataType::Floating32 => {
v2::rdbms_types::DbDataType::Floating32
}
Expand Down Expand Up @@ -236,11 +220,13 @@ mod rdbms_types {
}
}

impl From<v1::rdbms_types::ParameterValue> for spin::postgres::postgres::ParameterValue {
fn from(
impl TryFrom<v1::rdbms_types::ParameterValue> for spin::postgres::postgres::ParameterValue {
type Error = v1::postgres::PgError;

fn try_from(
value: v1::rdbms_types::ParameterValue,
) -> spin::postgres::postgres::ParameterValue {
match value {
) -> Result<spin::postgres::postgres::ParameterValue, Self::Error> {
let converted = match value {
v1::rdbms_types::ParameterValue::Boolean(b) => {
spin::postgres::postgres::ParameterValue::Boolean(b)
}
Expand All @@ -256,17 +242,13 @@ mod rdbms_types {
v1::rdbms_types::ParameterValue::Int64(i) => {
spin::postgres::postgres::ParameterValue::Int64(i)
}
v1::rdbms_types::ParameterValue::Uint8(u) => {
spin::postgres::postgres::ParameterValue::Uint8(u)
}
v1::rdbms_types::ParameterValue::Uint16(u) => {
spin::postgres::postgres::ParameterValue::Uint16(u)
}
v1::rdbms_types::ParameterValue::Uint32(u) => {
spin::postgres::postgres::ParameterValue::Uint32(u)
}
v1::rdbms_types::ParameterValue::Uint64(u) => {
spin::postgres::postgres::ParameterValue::Uint64(u)
v1::rdbms_types::ParameterValue::Uint8(_)
| v1::rdbms_types::ParameterValue::Uint16(_)
| v1::rdbms_types::ParameterValue::Uint32(_)
| v1::rdbms_types::ParameterValue::Uint64(_) => {
return Err(v1::postgres::PgError::ValueConversionFailed(
"Postgres does not support unsigned integers".to_owned(),
));
}
v1::rdbms_types::ParameterValue::Floating32(r) => {
spin::postgres::postgres::ParameterValue::Floating32(r)
Expand All @@ -283,15 +265,18 @@ mod rdbms_types {
v1::rdbms_types::ParameterValue::DbNull => {
spin::postgres::postgres::ParameterValue::DbNull
}
}
};
Ok(converted)
}
}

impl From<v2::rdbms_types::ParameterValue> for spin::postgres::postgres::ParameterValue {
fn from(
impl TryFrom<v2::rdbms_types::ParameterValue> for spin::postgres::postgres::ParameterValue {
type Error = v2::rdbms_types::Error;

fn try_from(
value: v2::rdbms_types::ParameterValue,
) -> spin::postgres::postgres::ParameterValue {
match value {
) -> Result<spin::postgres::postgres::ParameterValue, Self::Error> {
let converted = match value {
v2::rdbms_types::ParameterValue::Boolean(b) => {
spin::postgres::postgres::ParameterValue::Boolean(b)
}
Expand All @@ -307,17 +292,13 @@ mod rdbms_types {
v2::rdbms_types::ParameterValue::Int64(i) => {
spin::postgres::postgres::ParameterValue::Int64(i)
}
v2::rdbms_types::ParameterValue::Uint8(u) => {
spin::postgres::postgres::ParameterValue::Uint8(u)
}
v2::rdbms_types::ParameterValue::Uint16(u) => {
spin::postgres::postgres::ParameterValue::Uint16(u)
}
v2::rdbms_types::ParameterValue::Uint32(u) => {
spin::postgres::postgres::ParameterValue::Uint32(u)
}
v2::rdbms_types::ParameterValue::Uint64(u) => {
spin::postgres::postgres::ParameterValue::Uint64(u)
v2::rdbms_types::ParameterValue::Uint8(_)
| v2::rdbms_types::ParameterValue::Uint16(_)
| v2::rdbms_types::ParameterValue::Uint32(_)
| v2::rdbms_types::ParameterValue::Uint64(_) => {
return Err(v2::rdbms_types::Error::ValueConversionFailed(
"Postgres does not support unsigned integers".to_owned(),
));
}
v2::rdbms_types::ParameterValue::Floating32(r) => {
spin::postgres::postgres::ParameterValue::Floating32(r)
Expand All @@ -334,7 +315,8 @@ mod rdbms_types {
v2::rdbms_types::ParameterValue::DbNull => {
spin::postgres::postgres::ParameterValue::DbNull
}
}
};
Ok(converted)
}
}

Expand Down
12 changes: 0 additions & 12 deletions wit/deps/[email protected]/postgres.wit
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,6 @@ interface postgres {
int16,
int32,
int64,
uint8,
uint16,
uint32,
uint64,
floating32,
floating64,
str,
Expand All @@ -39,10 +35,6 @@ interface postgres {
int16(s16),
int32(s32),
int64(s64),
uint8(u8),
uint16(u16),
uint32(u32),
uint64(u64),
floating32(float32),
floating64(float64),
str(string),
Expand All @@ -62,10 +54,6 @@ interface postgres {
int16(s16),
int32(s32),
int64(s64),
uint8(u8),
uint16(u16),
uint32(u32),
uint64(u64),
floating32(float32),
floating64(float64),
str(string),
Expand Down

0 comments on commit d8e9b6f

Please sign in to comment.