Skip to content

Commit 53e4082

Browse files
committed
final clippy and formatting fixes
1 parent 691bc73 commit 53e4082

10 files changed

Lines changed: 42 additions & 22 deletions

File tree

crates/api/src/handlers/audit_logs.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ pub async fn get_user_audit_logs(
2424
let mut conn = state
2525
.db
2626
.get()
27-
.map_err(|e| ApiError::Database(e.to_string()))?;
27+
.map_err(|e| ApiError::DatabaseConnection(e.to_string()))?;
2828

2929
let logs = AuditLogRepository::find_by_user_paginated(&mut conn, user_id, limit, offset)?;
3030

crates/api/src/handlers/verify_email.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use axum::{extract::Query, extract::State, Extension, Json};
22
use payego_core::app_state::AppState;
33
use payego_core::security::Claims;
44
use payego_core::services::auth_service::verification::VerificationService;
5-
use payego_primitives::error::ApiError;
5+
use payego_primitives::error::{ApiError, AuthError};
66
use serde::Deserialize;
77
use std::sync::Arc;
88

@@ -32,10 +32,10 @@ pub async fn resend_verification(
3232
let mut conn = state
3333
.db
3434
.get()
35-
.map_err(|e| ApiError::Database(e.to_string()))?;
35+
.map_err(|e| ApiError::DatabaseConnection(e.to_string()))?;
3636
let user =
3737
payego_core::repositories::user_repository::UserRepository::find_by_id(&mut conn, user_id)?
38-
.ok_or_else(|| ApiError::Auth("User not found".into()))?;
38+
.ok_or_else(|| ApiError::Auth(AuthError::InternalError("User not found".into())))?;
3939

4040
VerificationService::send_verification_email(&state, user_id, &user.email).await?;
4141

crates/core/src/repositories/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ pub mod bank_repository;
44
pub mod token_repository;
55
pub mod transaction_repository;
66
pub mod user_repository;
7+
pub mod verification_repository;
78
pub mod wallet_repository;

crates/core/src/repositories/user_repository.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,6 @@ impl UserRepository {
6161
.set(users::email_verified_at.eq(chrono::Utc::now()))
6262
.execute(conn)
6363
.map(|_| ())
64-
.map_err(|e| ApiError::Database(e.to_string()))
64+
.map_err(ApiError::Database)
6565
}
6666
}

crates/core/src/repositories/verification_repository.rs

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
use crate::repositories::UserRepository;
1+
use crate::repositories::user_repository::UserRepository;
22
use diesel::prelude::*;
3-
use payego_primitives::error::ApiError;
4-
use payego_primitives::models::entities::verification_token::{NewVerificationToken, VerificationToken};
3+
use payego_primitives::error::{ApiError, AuthError};
4+
use payego_primitives::models::entities::verification_token::{
5+
NewVerificationToken, VerificationToken,
6+
};
57
use payego_primitives::schema::verification_tokens;
68
use uuid::Uuid;
79

@@ -15,7 +17,7 @@ impl VerificationRepository {
1517
diesel::insert_into(verification_tokens::table)
1618
.values(&new_token)
1719
.get_result(conn)
18-
.map_err(|e| ApiError::Database(e.to_string()))
20+
.map_err(ApiError::Database)
1921
}
2022

2123
pub fn find_by_token(
@@ -26,25 +28,30 @@ impl VerificationRepository {
2628
.filter(verification_tokens::token_hash.eq(token_hash))
2729
.first::<VerificationToken>(conn)
2830
.optional()
29-
.map_err(|e| ApiError::Database(e.to_string()))
31+
.map_err(ApiError::Database)
3032
}
3133

3234
pub fn delete_for_user(conn: &mut PgConnection, user_id: Uuid) -> Result<(), ApiError> {
3335
diesel::delete(verification_tokens::table.filter(verification_tokens::user_id.eq(user_id)))
3436
.execute(conn)
3537
.map(|_| ())
36-
.map_err(|e| ApiError::Database(e.to_string()))
38+
.map_err(ApiError::Database)
3739
}
3840

3941
pub fn consume_token(
4042
conn: &mut PgConnection,
4143
token_hash: &str,
4244
) -> Result<VerificationToken, ApiError> {
43-
let token = Self::find_by_token(conn, token_hash)?
44-
.ok_or_else(|| ApiError::Auth("Invalid or expired verification token".into()))?;
45+
let token = Self::find_by_token(conn, token_hash)?.ok_or_else(|| {
46+
ApiError::Auth(AuthError::VerificationError(
47+
"Invalid or expired verification token".into(),
48+
))
49+
})?;
4550

4651
if token.expires_at < chrono::Utc::now().naive_utc() {
47-
return Err(ApiError::Auth("Verification token has expired".into()));
52+
return Err(ApiError::Auth(AuthError::VerificationError(
53+
"Verification token has expired".into(),
54+
)));
4855
}
4956

5057
// Verify user and delete token

crates/core/src/services/auth_service/verification.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ impl VerificationService {
1919
let mut conn = state
2020
.db
2121
.get()
22-
.map_err(|e| ApiError::Database(e.to_string()))?;
22+
.map_err(|e| ApiError::DatabaseConnection(e.to_string()))?;
2323

2424
// 24 hour expiry
2525
let expires_at = chrono::Utc::now().naive_utc() + chrono::Duration::hours(24);
@@ -50,7 +50,7 @@ impl VerificationService {
5050
let mut conn = state
5151
.db
5252
.get()
53-
.map_err(|e| ApiError::Database(e.to_string()))?;
53+
.map_err(|e| ApiError::DatabaseConnection(e.to_string()))?;
5454

5555
VerificationRepository::consume_token(&mut conn, &token_hash)?;
5656

crates/primitives/src/error.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ impl From<ApiError> for (StatusCode, String) {
155155
AuthError::DuplicateEmail => {
156156
(StatusCode::BAD_REQUEST, "Email already exist".to_string())
157157
}
158+
AuthError::VerificationError(msg) => (StatusCode::BAD_REQUEST, msg),
158159
},
159160
ApiError::Payment(msg) => (
160161
StatusCode::INTERNAL_SERVER_ERROR,
@@ -258,6 +259,15 @@ impl IntoResponse for ApiError {
258259
},
259260
),
260261

262+
ApiError::Auth(AuthError::VerificationError(msg)) => (
263+
StatusCode::BAD_REQUEST,
264+
ApiErrorResponse {
265+
code: "VERIFICATION_ERROR".to_string(),
266+
message: msg,
267+
details: None,
268+
},
269+
),
270+
261271
// ── Validation & input errors ──
262272
ApiError::Validation(errors) => (
263273
StatusCode::BAD_REQUEST,
@@ -401,6 +411,7 @@ pub enum AuthError {
401411
BlacklistedToken,
402412
InternalError(String),
403413
DuplicateEmail,
414+
VerificationError(String),
404415
}
405416

406417
impl fmt::Display for AuthError {
@@ -413,6 +424,7 @@ impl fmt::Display for AuthError {
413424
AuthError::BlacklistedToken => write!(f, "Token has been invalidated"),
414425
AuthError::InternalError(msg) => write!(f, "Internal error: {}", msg),
415426
AuthError::DuplicateEmail => write!(f, "Email already exist"),
427+
AuthError::VerificationError(msg) => write!(f, "Verification error: {}", msg),
416428
}
417429
}
418430
}

crates/primitives/src/models/entities/user.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ pub struct User {
1010
pub email: String,
1111
pub password_hash: String,
1212
pub username: Option<String>,
13-
pub email_verified_at: Option<DateTime<Utc>>,
1413
pub created_at: DateTime<Utc>,
1514
pub updated_at: DateTime<Utc>,
15+
pub email_verified_at: Option<DateTime<Utc>>,
1616
}
1717

1818
#[derive(Insertable, Deserialize)]

crates/primitives/src/schema.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
// @generated automatically by Diesel CLI.
22

33
pub mod sql_types {
4-
#[derive(diesel::query_builder::QueryId, Clone, diesel::sql_types::SqlType)]
4+
#[derive(diesel::query_builder::QueryId, diesel::sql_types::SqlType)]
55
#[diesel(postgres_type(name = "currency_code"))]
66
pub struct CurrencyCode;
77

8-
#[derive(diesel::query_builder::QueryId, Clone, diesel::sql_types::SqlType)]
8+
#[derive(diesel::query_builder::QueryId, diesel::sql_types::SqlType)]
99
#[diesel(postgres_type(name = "payment_provider"))]
1010
pub struct PaymentProvider;
1111

12-
#[derive(diesel::query_builder::QueryId, Clone, diesel::sql_types::SqlType)]
12+
#[derive(diesel::query_builder::QueryId, diesel::sql_types::SqlType)]
1313
#[diesel(postgres_type(name = "payment_state"))]
1414
pub struct PaymentState;
1515

16-
#[derive(diesel::query_builder::QueryId, Clone, diesel::sql_types::SqlType)]
16+
#[derive(diesel::query_builder::QueryId, diesel::sql_types::SqlType)]
1717
#[diesel(postgres_type(name = "transaction_intent"))]
1818
pub struct TransactionIntent;
1919
}

diesel.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
[print_schema]
55
file = "crates/primitives/src/schema.rs"
6-
custom_type_derives = ["diesel::query_builder::QueryId", "Clone"]
6+
custom_type_derives = ["diesel::query_builder::QueryId"]
77

88
[migrations_directory]
99
dir = "migrations"

0 commit comments

Comments
 (0)