From 2ffa0b2a6e37ab8f0bd27cba04c2ab12d6e156f0 Mon Sep 17 00:00:00 2001 From: Jakub Onderka Date: Sun, 11 Jul 2021 22:35:15 +0200 Subject: [PATCH] Update postgres to 0.19 --- Cargo.toml | 2 +- src/postgres_support.rs | 60 +++++++++++++++++++++-------------------- 2 files changed, 32 insertions(+), 30 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 9163d95..235335a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,7 +24,7 @@ version = "1.0" optional = true [dependencies.postgres] -version = "0.15" +version = "0.19" optional = true [dependencies.diesel] diff --git a/src/postgres_support.rs b/src/postgres_support.rs index d8ab302..03a167a 100644 --- a/src/postgres_support.rs +++ b/src/postgres_support.rs @@ -1,29 +1,29 @@ use std::error::Error; -use postgres::types::{FromSql, IsNull, ToSql, Type, CIDR}; -use postgres::{accepts, to_sql_checked}; +use postgres::types::{FromSql, IsNull, ToSql, Type, accepts, to_sql_checked}; use crate::{IpNetwork, Ipv4Network, Ipv6Network}; use crate::postgres_common; +use postgres::types::private::BytesMut; -type PostgresResult = Result>; +type PostgresResult = Result>; -impl FromSql for Ipv4Network { - fn from_sql(_: &Type, raw: &[u8]) -> PostgresResult { +impl<'a> FromSql<'a> for Ipv4Network { + fn from_sql(_: &Type, raw: &'a [u8]) -> PostgresResult { postgres_common::from_sql_ipv4_network(raw) } accepts!(CIDR); } -impl FromSql for Ipv6Network { - fn from_sql(_: &Type, raw: &[u8]) -> PostgresResult { +impl<'a> FromSql<'a> for Ipv6Network { + fn from_sql(_: &Type, raw: &'a [u8]) -> PostgresResult { postgres_common::from_sql_ipv6_network(raw) } accepts!(CIDR); } -impl FromSql for IpNetwork { - fn from_sql(t: &Type, raw: &[u8]) -> PostgresResult { +impl<'a> FromSql<'a> for IpNetwork { + fn from_sql(t: &Type, raw: &'a [u8]) -> PostgresResult { match raw[0] { postgres_common::IPV4_TYPE => Ok(IpNetwork::V4(Ipv4Network::from_sql(t, raw)?)), postgres_common::IPV6_TYPE => Ok(IpNetwork::V6(Ipv6Network::from_sql(t, raw)?)), @@ -35,7 +35,7 @@ impl FromSql for IpNetwork { } impl ToSql for Ipv4Network { - fn to_sql(&self, _: &Type, w: &mut Vec) -> PostgresResult { + fn to_sql(&self, _ty: &Type, w: &mut BytesMut) -> PostgresResult { let bytes = postgres_common::to_sql_ipv4_network(self); w.extend_from_slice(&bytes); @@ -47,7 +47,7 @@ impl ToSql for Ipv4Network { } impl ToSql for Ipv6Network { - fn to_sql(&self, _: &Type, w: &mut Vec) -> PostgresResult { + fn to_sql(&self, _ty: &Type, w: &mut BytesMut) -> PostgresResult { let bytes = postgres_common::to_sql_ipv6_network(self); w.extend_from_slice(&bytes); @@ -59,10 +59,10 @@ impl ToSql for Ipv6Network { } impl ToSql for IpNetwork { - fn to_sql(&self, t: &Type, w: &mut Vec) -> PostgresResult { + fn to_sql(&self, ty: &Type, w: &mut BytesMut) -> PostgresResult { match *self { - IpNetwork::V4(ref network) => network.to_sql(t, w), - IpNetwork::V6(ref network) => network.to_sql(t, w), + IpNetwork::V4(ref network) => network.to_sql(ty, w), + IpNetwork::V6(ref network) => network.to_sql(ty, w), } } @@ -73,8 +73,10 @@ impl ToSql for IpNetwork { #[cfg(test)] mod tests { use std::net::{Ipv4Addr, Ipv6Addr}; - use postgres::types::{FromSql, ToSql, CIDR}; + use postgres::types::{FromSql, ToSql}; + use postgres::types::Type; use crate::{IpNetwork, Ipv4Network, Ipv6Network}; + use postgres::types::private::BytesMut; fn return_test_ipv4_network() -> Ipv4Network { Ipv4Network::new(Ipv4Addr::new(192, 168, 0, 0), 16).unwrap() @@ -87,8 +89,8 @@ mod tests { #[test] fn ivp4_to_sql() { let ip_network = return_test_ipv4_network(); - let mut output = vec![]; - assert!(ip_network.to_sql(&CIDR, &mut output).is_ok()); + let mut output = BytesMut::new(); + assert!(ip_network.to_sql(&Type::CIDR, &mut output).is_ok()); assert_eq!(2, output[0]); assert_eq!(16, output[1]); assert_eq!(1, output[2]); @@ -102,11 +104,11 @@ mod tests { #[test] fn ivp4_both_direction() { let ip_network = return_test_ipv4_network(); - let mut output = vec![]; + let mut output = BytesMut::new(); - assert!(ip_network.to_sql(&CIDR, &mut output).is_ok()); + assert!(ip_network.to_sql(&Type::CIDR, &mut output).is_ok()); - let result = Ipv4Network::from_sql(&CIDR, &output); + let result = Ipv4Network::from_sql(&Type::CIDR, &output); assert!(result.is_ok()); let ip_network_converted = result.unwrap(); @@ -116,8 +118,8 @@ mod tests { #[test] fn ivp6_to_sql() { let ip_network = return_test_ipv6_network(); - let mut output = vec![]; - assert!(ip_network.to_sql(&CIDR, &mut output).is_ok()); + let mut output = BytesMut::new(); + assert!(ip_network.to_sql(&Type::CIDR, &mut output).is_ok()); assert_eq!(3, output[0]); assert_eq!(32, output[1]); assert_eq!(1, output[2]); @@ -134,11 +136,11 @@ mod tests { #[test] fn ivp6_both_direction() { let ip_network = return_test_ipv6_network(); - let mut output = vec![]; + let mut output = BytesMut::new(); - assert!(ip_network.to_sql(&CIDR, &mut output).is_ok()); + assert!(ip_network.to_sql(&Type::CIDR, &mut output).is_ok()); - let result = Ipv6Network::from_sql(&CIDR, &output); + let result = Ipv6Network::from_sql(&Type::CIDR, &output); assert!(result.is_ok()); let ip_network_converted = result.unwrap(); @@ -148,14 +150,14 @@ mod tests { #[test] fn ipnetwork_to_sql_v4() { let ip_network = IpNetwork::V4(return_test_ipv4_network()); - let mut output = vec![]; - assert!(ip_network.to_sql(&CIDR, &mut output).is_ok()); + let mut output = BytesMut::new(); + assert!(ip_network.to_sql(&Type::CIDR, &mut output).is_ok()); } #[test] fn ipnetwork_to_sql_v6() { let ip_network = IpNetwork::V6(return_test_ipv6_network()); - let mut output = vec![]; - assert!(ip_network.to_sql(&CIDR, &mut output).is_ok()); + let mut output = BytesMut::new(); + assert!(ip_network.to_sql(&Type::CIDR, &mut output).is_ok()); } }