From 0adf5a093494bdb7f5d5c0f12913133e333ddfad Mon Sep 17 00:00:00 2001 From: Joris Date: Fri, 31 Jan 2025 22:28:53 +0100 Subject: Migrate to tokio_rusqlite --- src/model/frequency.rs | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'src/model/frequency.rs') diff --git a/src/model/frequency.rs b/src/model/frequency.rs index bb83e27..91aab89 100644 --- a/src/model/frequency.rs +++ b/src/model/frequency.rs @@ -1,7 +1,7 @@ -use serde::{Deserialize, Serialize}; +use rusqlite::types::{FromSql, FromSqlError, FromSqlResult, ValueRef}; use std::{fmt, str}; -#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, sqlx::Type)] +#[derive(Debug, Clone, Copy, serde::Serialize, serde::Deserialize, PartialEq)] pub enum Frequency { Punctual, Monthly, @@ -29,3 +29,19 @@ impl str::FromStr for Frequency { } } } + +impl FromSql for Frequency { + fn column_result(value: ValueRef<'_>) -> FromSqlResult { + match value { + ValueRef::Text(text) => match std::str::from_utf8(text) { + Ok("Punctual") => Ok(Frequency::Punctual), + Ok("Monthly") => Ok(Frequency::Monthly), + Ok(str) => Err(FromSqlError::Other( + format!("Unknown frequency: {str}").into(), + )), + Err(err) => Err(FromSqlError::Other(err.into())), + }, + _ => Err(FromSqlError::InvalidType), + } + } +} -- cgit v1.2.3