diff options
Diffstat (limited to 'src/model')
| -rw-r--r-- | src/model/action.rs | 1 | ||||
| -rw-r--r-- | src/model/balancing.rs | 30 | ||||
| -rw-r--r-- | src/model/category.rs | 4 | ||||
| -rw-r--r-- | src/model/config.rs | 4 | ||||
| -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 | 2 | ||||
| -rw-r--r-- | src/model/payment.rs | 9 | ||||
| -rw-r--r-- | src/model/report.rs | 16 | ||||
| -rw-r--r-- | src/model/user.rs | 4 |
11 files changed, 69 insertions, 41 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/balancing.rs b/src/model/balancing.rs new file mode 100644 index 0000000..6da7646 --- /dev/null +++ b/src/model/balancing.rs @@ -0,0 +1,30 @@ +#[derive(Debug, serde::Serialize)] +pub struct TableRow { + pub id: i64, + pub date: String, + pub source: String, + pub destination: String, + pub amount: i64, +} + +#[derive(serde::Serialize, Clone)] +pub struct Balancing { + pub id: i64, + pub source: i64, + pub destination: i64, + pub amount: i64, +} + +#[derive(Debug)] +pub struct Create { + pub source: i64, + pub destination: i64, + pub amount: i64, +} + +#[derive(Debug)] +pub struct Update { + pub source: i64, + pub destination: i64, + pub amount: i64, +} 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..ba923d6 100644 --- a/src/model/config.rs +++ b/src/model/config.rs @@ -4,18 +4,14 @@ use std::str::FromStr; #[derive(Clone)] pub struct Config { - pub auth_secret: String, pub db_path: String, - pub mock_mails: bool, pub secure_cookies: bool, pub socket_address: SocketAddr, } 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..9381103 100644 --- a/src/model/mod.rs +++ b/src/model/mod.rs @@ -1,3 +1,4 @@ +pub mod balancing; pub mod category; pub mod config; pub mod frequency; @@ -5,5 +6,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, |
