aboutsummaryrefslogtreecommitdiff
path: root/src/model
diff options
context:
space:
mode:
Diffstat (limited to 'src/model')
-rw-r--r--src/model/action.rs1
-rw-r--r--src/model/category.rs4
-rw-r--r--src/model/config.rs2
-rw-r--r--src/model/frequency.rs22
-rw-r--r--src/model/income.rs7
-rw-r--r--src/model/job.rs11
-rw-r--r--src/model/mod.rs1
-rw-r--r--src/model/payment.rs9
-rw-r--r--src/model/report.rs16
-rw-r--r--src/model/user.rs4
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,