Files
neomovies-api/pkg/services/tv.go

75 lines
2.2 KiB
Go
Raw Normal View History

2025-08-07 13:47:42 +00:00
package services
import (
"go.mongodb.org/mongo-driver/mongo"
"neomovies-api/pkg/models"
)
type TVService struct {
db *mongo.Database
tmdb *TMDBService
kpService *KinopoiskService
2025-08-07 13:47:42 +00:00
}
func NewTVService(db *mongo.Database, tmdb *TMDBService, kpService *KinopoiskService) *TVService {
2025-08-07 13:47:42 +00:00
return &TVService{
db: db,
tmdb: tmdb,
kpService: kpService,
2025-08-07 13:47:42 +00:00
}
}
func (s *TVService) Search(query string, page int, language string, year int) (*models.TMDBTVResponse, error) {
return s.tmdb.SearchTVShows(query, page, language, year)
}
func (s *TVService) GetByID(id int, language string, idType string) (*models.TVShow, error) {
// Если указан id_type, используем его; иначе определяем по языку
useKP := false
if idType == "kp" {
useKP = true
} else if idType == "tmdb" {
useKP = false
} else {
// Если id_type не указан, используем старую логику по языку
useKP = ShouldUseKinopoisk(language)
}
if useKP && s.kpService != nil {
kpFilm, err := s.kpService.GetFilmByKinopoiskId(id)
if err == nil && kpFilm != nil {
return MapKPFilmToTVShow(kpFilm), nil
}
}
2025-08-07 13:47:42 +00:00
return s.tmdb.GetTVShow(id, language)
}
func (s *TVService) GetPopular(page int, language string) (*models.TMDBTVResponse, error) {
return s.tmdb.GetPopularTVShows(page, language)
}
func (s *TVService) GetTopRated(page int, language string) (*models.TMDBTVResponse, error) {
return s.tmdb.GetTopRatedTVShows(page, language)
}
func (s *TVService) GetOnTheAir(page int, language string) (*models.TMDBTVResponse, error) {
return s.tmdb.GetOnTheAirTVShows(page, language)
}
func (s *TVService) GetAiringToday(page int, language string) (*models.TMDBTVResponse, error) {
return s.tmdb.GetAiringTodayTVShows(page, language)
}
func (s *TVService) GetRecommendations(id, page int, language string) (*models.TMDBTVResponse, error) {
return s.tmdb.GetTVRecommendations(id, page, language)
}
func (s *TVService) GetSimilar(id, page int, language string) (*models.TMDBTVResponse, error) {
return s.tmdb.GetSimilarTVShows(id, page, language)
}
func (s *TVService) GetExternalIDs(id int) (*models.ExternalIDs, error) {
return s.tmdb.GetTVExternalIDs(id)
}