src/
├── use_cases/ # Business logic and application use cases
│ ├── video/ # Use cases specific to video management
│ │ ├── save_video.py # Save video data to Elasticsearch via a database gateway
│ │ └── list_videos.py
│ ├── category/ # Use cases for category management
│ │ ├── save_category.py
│ │ └── list_categories.py
│ ├── genre/ # Use cases for genre management
│ │ ├── save_genre.py
│ │ └── list_genres.py
│ └── cast_member/ # Use cases for cast member management
│ ├── save_cast_member.py
│ └── list_cast_members.py
├── domain/ # Domain models (similar to DTOs with limited business rules)
│ ├── video.py # Praticamente só regras de validação? Talvez assumir dados válidos para evitar repetições
│ ├── category.py
│ ├── genre.py
│ └── cast_member.py
├── controller/ # Controllers for interfacing with the outer world (HTTP, GraphQL)
│ ├── graphql/ # GraphQL specific controllers
│ └── fastapi/ # FastAPI specific controllers (RESTful API)
└── gateway/ # Abstractions for external component integrations
├── elasticsearch/ # Elasticsearch integration logic
└── kafka/ # Kafka integration logic