diff options
Diffstat (limited to 'src/model')
-rw-r--r-- | src/model/action.rs | 1 | ||||
-rw-r--r-- | src/model/category.rs | 4 | ||||
-rw-r--r-- | src/model/config.rs | 2 | ||||
-rw-r--r-- | src/model/frequency.rs | 22 | ||||
-rw-r--r-- | src/model/income.rs | 7 | ||||
-rw-r--r-- | src/model/job.rs | 11 | ||||
-rw-r--r-- | src/model/mod.rs | 1 | ||||
-rw-r--r-- | src/model/payment.rs | 9 | ||||
-rw-r--r-- | src/model/report.rs | 16 | ||||
-rw-r--r-- | src/model/user.rs | 4 |
10 files changed, 38 insertions, 39 deletions
diff --git a/src/model/action.rs b/src/model/action.rs deleted file mode 100644 index a77543a..0000000 --- a/src/model/action.rs +++ /dev/null @@ -1 +0,0 @@ -use serde::Serialize; diff --git a/src/model/category.rs b/src/model/category.rs index de08dea..ecece96 100644 --- a/src/model/category.rs +++ b/src/model/category.rs @@ -1,6 +1,4 @@ -use serde::Serialize; - -#[derive(sqlx::FromRow, Serialize)] +#[derive(serde::Serialize, Clone)] pub struct Category { pub id: i64, pub name: String, diff --git a/src/model/config.rs b/src/model/config.rs index 1fa5bb4..f40b0fb 100644 --- a/src/model/config.rs +++ b/src/model/config.rs @@ -6,7 +6,6 @@ use std::str::FromStr; pub struct Config { pub auth_secret: String, pub db_path: String, - pub mock_mails: bool, pub secure_cookies: bool, pub socket_address: SocketAddr, } @@ -15,7 +14,6 @@ pub fn from_env() -> Result<Config, String> { Ok(Config { auth_secret: read_string("AUTH_SECRET")?, db_path: read_string("DB_PATH")?, - mock_mails: read_bool("MOCK_MAILS")?, secure_cookies: read_bool("SECURE_COOKIES")?, socket_address: read_socket_address("SOCKET_ADDRESS")?, }) diff --git a/src/model/frequency.rs b/src/model/frequency.rs index bb83e27..f96482c 100644 --- a/src/model/frequency.rs +++ b/src/model/frequency.rs @@ -1,7 +1,9 @@ -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 +31,19 @@ impl str::FromStr for Frequency { } } } + +impl FromSql for Frequency { + fn column_result(value: ValueRef<'_>) -> FromSqlResult<Self> { + 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), + } + } +} diff --git a/src/model/income.rs b/src/model/income.rs index ef97b56..c953251 100644 --- a/src/model/income.rs +++ b/src/model/income.rs @@ -1,13 +1,12 @@ use chrono::NaiveDate; -use serde::Serialize; -#[derive(Debug, Clone, sqlx::FromRow, Serialize)] +#[derive(Debug, Clone, serde::Serialize)] pub struct Stat { pub date: String, pub amount: i64, } -#[derive(Debug, Clone, sqlx::FromRow, Serialize)] +#[derive(Debug, Clone, serde::Serialize)] pub struct Table { pub id: i64, pub date: String, @@ -15,7 +14,7 @@ pub struct Table { pub amount: i64, } -#[derive(Debug, Clone, sqlx::FromRow, Serialize)] +#[derive(Debug, Clone, serde::Serialize)] pub struct Form { pub id: i64, pub amount: i64, diff --git a/src/model/job.rs b/src/model/job.rs index 74151ae..b10b2df 100644 --- a/src/model/job.rs +++ b/src/model/job.rs @@ -1,5 +1,12 @@ -#[derive(Debug, sqlx::Type)] +use std::fmt; + +#[derive(Debug)] pub enum Job { MonthlyPayment, - WeeklyReport, +} + +impl fmt::Display for Job { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "{:?}", self) + } } diff --git a/src/model/mod.rs b/src/model/mod.rs index fb07721..55adadd 100644 --- a/src/model/mod.rs +++ b/src/model/mod.rs @@ -5,5 +5,4 @@ pub mod income; pub mod job; pub mod login; pub mod payment; -pub mod report; pub mod user; diff --git a/src/model/payment.rs b/src/model/payment.rs index 5ce6bb9..d732528 100644 --- a/src/model/payment.rs +++ b/src/model/payment.rs @@ -1,9 +1,8 @@ use chrono::NaiveDate; -use serde::Serialize; use crate::model::frequency::Frequency; -#[derive(Debug, sqlx::FromRow, Serialize)] +#[derive(Debug, serde::Serialize)] pub struct Table { pub id: i64, pub name: String, @@ -15,7 +14,7 @@ pub struct Table { pub frequency: Frequency, } -#[derive(Debug, sqlx::FromRow, Serialize)] +#[derive(Debug, serde::Serialize)] pub struct Form { pub id: i64, pub name: String, @@ -26,14 +25,14 @@ pub struct Form { pub frequency: Frequency, } -#[derive(Debug, sqlx::FromRow, Serialize)] +#[derive(Debug, serde::Serialize)] pub struct Stat { pub start_date: String, pub cost: i64, pub category_id: i64, } -#[derive(Debug)] +#[derive(Debug, Clone)] pub struct Create { pub name: String, pub cost: i64, diff --git a/src/model/report.rs b/src/model/report.rs deleted file mode 100644 index 4858402..0000000 --- a/src/model/report.rs +++ /dev/null @@ -1,16 +0,0 @@ -use serde::Serialize; - -#[derive(Debug, sqlx::FromRow, Serialize)] -pub struct Report { - pub date: String, - pub name: String, - pub amount: i64, - pub action: Action, -} - -#[derive(Debug, PartialEq, Serialize, sqlx::Type)] -pub enum Action { - Created, - Updated, - Deleted, -} diff --git a/src/model/user.rs b/src/model/user.rs index e8a61bf..06165dd 100644 --- a/src/model/user.rs +++ b/src/model/user.rs @@ -1,6 +1,4 @@ -use serde::Serialize; - -#[derive(Debug, sqlx::FromRow, Clone, Serialize)] +#[derive(Debug, Clone, serde::Serialize)] pub struct User { pub id: i64, pub name: String, |