sqlx_core_oldapi/mysql/types/
decimal.rs

1use rust_decimal::Decimal;
2
3use crate::decode::Decode;
4use crate::encode::{Encode, IsNull};
5use crate::error::BoxDynError;
6use crate::mysql::io::MySqlBufMutExt;
7use crate::mysql::protocol::text::ColumnType;
8use crate::mysql::{MySql, MySqlTypeInfo, MySqlValueRef};
9use crate::types::Type;
10
11impl Type<MySql> for Decimal {
12    fn type_info() -> MySqlTypeInfo {
13        MySqlTypeInfo::binary(ColumnType::NewDecimal)
14    }
15}
16
17impl Encode<'_, MySql> for Decimal {
18    fn encode_by_ref(&self, buf: &mut Vec<u8>) -> IsNull {
19        buf.put_str_lenenc(&self.to_string());
20
21        IsNull::No
22    }
23}
24
25impl Decode<'_, MySql> for Decimal {
26    fn decode(value: MySqlValueRef<'_>) -> Result<Self, BoxDynError> {
27        Ok(value.as_str()?.parse()?)
28    }
29}