
- Eliminate manual ApiResponse construction in 5 handlers - Add MemberService + sql::members following established pattern - Create success_message_only() utility for empty responses - Fix members handler: db::members direct calls → service layer - Add SanitizeOutput for LoginResponse trait consistency - All examined handlers now follow Handler → Service → SQL pattern
28 lines
841 B
Rust
28 lines
841 B
Rust
use sqlx::PgPool;
|
|
use uuid::Uuid;
|
|
use crate::{error::Result, models::{Member, CreateMemberRequest}, sql};
|
|
|
|
pub struct MemberService;
|
|
|
|
impl MemberService {
|
|
/// List all members
|
|
pub async fn list_all(pool: &PgPool) -> Result<Vec<Member>> {
|
|
sql::members::list_all(pool).await
|
|
}
|
|
|
|
/// List only active members
|
|
pub async fn list_active(pool: &PgPool) -> Result<Vec<Member>> {
|
|
sql::members::list_active(pool).await
|
|
}
|
|
|
|
/// Create new member with validation
|
|
pub async fn create(pool: &PgPool, req: CreateMemberRequest) -> Result<Member> {
|
|
// Add any business logic/validation here if needed
|
|
sql::members::create(pool, req).await
|
|
}
|
|
|
|
/// Delete member by ID
|
|
pub async fn delete(pool: &PgPool, id: &Uuid) -> Result<bool> {
|
|
sql::members::delete(pool, id).await
|
|
}
|
|
} |