use async_trait::async_trait;
use uuid::Uuid;
use crate::{domain::user::User, error::AppError};
/// Port (interface) para operações de persistência de usuários.
/// Implementado pelo adapter `PostgresUserRepository`.
#[async_trait]
pub trait UserRepository: Send + Sync {
async fn find_by_id(&self, id: Uuid) -> Result