use super::entity::*; use async_trait::async_trait; use imphnen_utils::errors::AppError; use uuid::Uuid; #[async_trait] pub trait TeamService: Send + Sync { async fn create_team( &self, user_id: Uuid, input: CreateTeamInput, ) -> Result; async fn get_team_by_id(&self, team_id: Uuid) -> Result; async fn browse_teams( &self, input: BrowseTeamsInput, ) -> Result; async fn get_user_teams( &self, user_id: Uuid, ) -> Result, AppError>; async fn update_team( &self, team_id: Uuid, user_id: Uuid, input: UpdateTeamInput, ) -> Result; async fn remove_team_member( &self, team_id: Uuid, user_id: Uuid, member_id: Uuid, ) -> Result<(), AppError>; async fn leave_team(&self, team_id: Uuid, user_id: Uuid) -> Result<(), AppError>; async fn delete_team(&self, team_id: Uuid, user_id: Uuid) -> Result<(), AppError>; }