diff --git a/core/internal/handlers/tvshow.go b/core/internal/handlers/tvshow.go index 1efd13d..3dc84a5 100644 --- a/core/internal/handlers/tvshow.go +++ b/core/internal/handlers/tvshow.go @@ -26,6 +26,7 @@ func (hq *Handlers) GetTVShow(c *fiber.Ctx) error { var title string var scraperEpisodes []scraper.Episode + var sqlcTvShow sqlc.TvShow var sqlcEpisodes []sqlc.Episode var totalVoteCount int32 @@ -33,7 +34,7 @@ func (hq *Handlers) GetTVShow(c *fiber.Ctx) error { if err != nil { title, scraperEpisodes = scraper.ScrapeEpisodes(ttShowID) //TODO: make transactional - ttShow, err := hq.queries.CreateTVShow(c.Context(), sqlc.CreateTVShowParams{ + sqlcTvShow, err = hq.queries.CreateTVShow(c.Context(), sqlc.CreateTVShowParams{ TtImdb: ttShowID, Name: title, }) @@ -42,14 +43,15 @@ func (hq *Handlers) GetTVShow(c *fiber.Ctx) error { return c.SendStatus(http.StatusInternalServerError) } - slog.Info("ttshowid", "id", ttShow.ID) + slog.Info("ttshowid", "id", sqlcTvShow.ID) for _, episode := range scraperEpisodes { - sqlcEpisodesParams := episode.ToEpisodeParams(ttShow.ID) + sqlcEpisodesParams := episode.ToEpisodeParams(sqlcTvShow.ID) sqlcEpisode, err := hq.queries.CreateEpisodes(c.Context(), sqlcEpisodesParams) if err != nil { slog.Error("failed to create episodes", "ttid", ttShowID, "error", err) return c.SendStatus(http.StatusInternalServerError) } + totalVoteCount += int32(episode.VoteCount) sqlcEpisodes = append(sqlcEpisodes, sqlcEpisode) } @@ -76,7 +78,6 @@ func (hq *Handlers) GetTVShow(c *fiber.Ctx) error { return c.SendStatus(http.StatusInternalServerError) } - // calculate avg rating for the show avgRatingShow, err := hq.queries.TvShowAverageRating(c.Context(), sqlcTvShow.ID) if err != nil { slog.Error("failed to calculate avg rating for the show", "ttid", ttShowID, "error", err) diff --git a/docker-compose.yml b/docker-compose.yml index 8e14e8a..d3342b4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,10 +4,23 @@ services: core: container_name: rating-orama image: rating-orama:latest + depends_on: + db: + condition: service_started environment: DRIVERNAME: pgx DATASOURCE: postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}?sslmode=disable MIGRATE: true + TITLE_SELECTOR: ${TITLE_SELECTOR} + SEASON_SELECTOR: ${SEASON_SELECTOR} + EPISODE_CARD_SELECTOR: ${EPISODE_CARD_SELECTOR} + SEASON_EPISODE_AND_TITLE_SELECTOR: ${SEASON_EPISODE_AND_TITLE_SELECTOR} + RELEASED_DATE_SELECTOR: ${RELEASED_DATE_SELECTOR} + PLOT_SELECTOR: ${PLOT_SELECTOR} + STAR_RATING_SELECTOR: ${STAR_RATING_SELECTOR} + VOTE_COUNT_SELECTOR: ${VOTE_COUNT_SELECTOR} + IMDB_EPISODES_URL: ${IMDB_EPISODES_URL} + VISIT_URL: ${VISIT_URL} ports: - "8086:8080" networks: @@ -29,3 +42,4 @@ networks: volumes: ratingorama_data: +