diesel/sqlite/types/
numeric.rs1#![cfg(feature = "numeric")]
2
3use bigdecimal::{BigDecimal, FromPrimitive};
4
5use crate::deserialize::{self, FromSql};
6use crate::sql_types::{Double, Numeric};
7use crate::sqlite::connection::SqliteValue;
8use crate::sqlite::Sqlite;
9
10#[cfg(all(feature = "sqlite", feature = "numeric"))]
11impl FromSql<Numeric, Sqlite> for BigDecimal {
12 fn from_sql(bytes: SqliteValue<'_, '_, '_>) -> deserialize::Result<Self> {
13 let x = <f64 as FromSql<Double, Sqlite>>::from_sql(bytes)?;
14 BigDecimal::from_f64(x).ok_or_else(|| format!("{x} is not valid decimal number ").into())
15 }
16}