rbdc_pg/types/
decimal.rs

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}