Files
kempe-backend/src/domain/repositories/team_repository.py
Michael Simard 337a6377de Initial commit: CLEAN architecture foundation for fantasy hockey backend
Implemented CLEAN architecture with clear separation of concerns:
- Domain layer with entities (Player, Team, Stats, FantasyTeam) and repository interfaces
- Application layer with use case implementations
- Infrastructure layer with NHL API and Yahoo Fantasy API adapters
- Presentation layer with FastAPI configuration and dependency injection

Key features:
- Swappable data source adapters (NHL API, Yahoo Fantasy API)
- Repository pattern for data access abstraction
- Dependency injection for loose coupling
- FastAPI framework with async support
- PostgreSQL database configuration
- Environment-based configuration management

Technology stack: Python 3.11+, FastAPI, PostgreSQL, nhl-api-py, yfpy

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-23 17:13:58 -06:00

30 lines
855 B
Python

"""Team repository interface."""
from abc import ABC, abstractmethod
from typing import List, Optional
from src.domain.entities import NHLTeam
class TeamRepository(ABC):
"""Abstract interface for NHL team data access."""
@abstractmethod
async def get_team_by_id(self, team_id: str) -> Optional[NHLTeam]:
"""Retrieves a team by its unique identifier."""
pass
@abstractmethod
async def get_all_teams(self) -> List[NHLTeam]:
"""Retrieves all NHL teams."""
pass
@abstractmethod
async def get_teams_by_division(self, division: str) -> List[NHLTeam]:
"""Retrieves all teams in a specific division."""
pass
@abstractmethod
async def get_teams_by_conference(self, conference: str) -> List[NHLTeam]:
"""Retrieves all teams in a specific conference."""
pass