summaryrefslogtreecommitdiffstats
path: root/src/model.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/model.rs')
-rw-r--r--src/model.rs55
1 files changed, 33 insertions, 22 deletions
diff --git a/src/model.rs b/src/model.rs
index 9c1bfe6..5f6111e 100644
--- a/src/model.rs
+++ b/src/model.rs
@@ -1,28 +1,16 @@
-use chrono::prelude::*;
use serde::{Deserialize, Serialize};
+use time::OffsetDateTime;
-#[allow(non_snake_case)]
-#[derive(Debug, Deserialize, sqlx::FromRow, Serialize, Clone)]
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, sqlx::FromRow)]
+#[serde(rename_all = "camelCase")]
pub struct User {
pub id: uuid::Uuid,
pub name: String,
pub email: String,
+ #[serde(default, skip_serializing)]
pub password: String,
- #[serde(rename = "createdAt")]
- pub created_at: Option<DateTime<Utc>>,
- #[serde(rename = "updatedAt")]
- pub updated_at: Option<DateTime<Utc>>,
-}
-
-impl User {
- pub fn into_query_response(self) -> axum::Json<serde_json::Value> {
- axum::Json(serde_json::json!({
- "status": "success",
- "data": serde_json::json!({
- "user": self
- })
- }))
- }
+ pub created_at: Option<OffsetDateTime>,
+ pub updated_at: Option<OffsetDateTime>,
}
#[derive(Debug, Serialize, Deserialize)]
@@ -32,15 +20,38 @@ pub struct TokenClaims {
pub exp: usize,
}
-#[derive(Debug, Deserialize)]
-pub struct RegisterUserSchema {
+#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+pub struct RegisterSchema {
pub name: String,
pub email: String,
+ #[serde(default, skip_serializing)]
pub password: String,
}
-#[derive(Debug, Deserialize)]
-pub struct LoginUserSchema {
+#[derive(Debug, Serialize, Deserialize)]
+pub struct LoginSchema {
pub email: String,
+ #[serde(default, skip_serializing)]
pub password: String,
}
+
+macro_rules! impl_from_superset {
+ ($from:tt, $to:ty, $($field:tt)*) => {
+ impl From<$from> for $to {
+ fn from(value: $from) -> Self {
+ let $from {
+ $($field)*,
+ ..
+ } = value;
+
+ Self {
+ $($field)*,
+ }
+ }
+ }
+ };
+}
+
+impl_from_superset!(User, RegisterSchema, name, email, password);
+impl_from_superset!(User, LoginSchema, email, password);
+impl_from_superset!(RegisterSchema, LoginSchema, email, password);