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>
This commit is contained in:
29
src/domain/repositories/team_repository.py
Normal file
29
src/domain/repositories/team_repository.py
Normal file
@@ -0,0 +1,29 @@
|
||||
"""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
|
||||
Reference in New Issue
Block a user