1use crate::arguments::PgArgumentBuffer;
2use crate::types::decode::Decode;
3use crate::types::encode::{Encode, IsNull};
4use crate::value::{PgValue, PgValueFormat};
5use bigdecimal::BigDecimal;
6use rbdc::decimal::Decimal;
7use rbdc::Error;
8
9impl Encode for Decimal {
10 fn encode(self, buf: &mut PgArgumentBuffer) -> Result<IsNull, Error> {
11 self.0.encode(buf)?;
12 Ok(IsNull::No)
13 }
14}
15
16impl Decode for Decimal {
17 fn decode(value: PgValue) -> Result<Self, Error> {
18 match value.format() {
19 PgValueFormat::Binary => Ok(Self(BigDecimal::decode(value)?)),
20 PgValueFormat::Text => Ok(Self(BigDecimal::decode(value)?)),
21 }
22 }
23}