ruva-core 0.19.4

Rust Library For Event Driven TEvent Handling
Documentation
use crate::prelude::BaseError;
use crate::snowflake::SnowFlake;

use sqlx::error::BoxDynError;
use sqlx::postgres::{PgHasArrayType, PgTypeInfo, PgValueRef};
use sqlx::{Encode, Postgres, Type};

impl Encode<'_, Postgres> for SnowFlake {
	fn encode_by_ref(&self, buf: &mut <Postgres as sqlx::Database>::ArgumentBuffer<'_>) -> Result<sqlx::encode::IsNull, BoxDynError> {
		let value = self.0;
		<i64 as Encode<Postgres>>::encode(value, buf)
	}
}

impl<'r> sqlx::Decode<'r, Postgres> for SnowFlake {
	fn decode(value: PgValueRef<'r>) -> Result<Self, BoxDynError> {
		let i64_value = <i64 as sqlx::Decode<Postgres>>::decode(value)?;
		Ok(SnowFlake(i64_value))
	}
}

impl sqlx::Type<Postgres> for SnowFlake {
	fn type_info() -> sqlx::postgres::PgTypeInfo {
		<i64 as Type<Postgres>>::type_info()
	}

	fn compatible(ty: &PgTypeInfo) -> bool {
		<i64 as Type<Postgres>>::compatible(ty)
	}
}

impl From<sqlx::Error> for BaseError {
	fn from(value: sqlx::Error) -> Self {
		tracing::error!("{:?}", value);
		Self::DatabaseError(value.to_string())
	}
}

impl PgHasArrayType for SnowFlake {
	fn array_type_info() -> PgTypeInfo {
		<i64 as PgHasArrayType>::array_type_info()
	}
}