Compare commits

4 Commits

Author SHA1 Message Date
pedro a4cfeb8496 update gitignore 2025-02-26 05:11:25 +01:00
pedro 17d4dca0c9 bump version 2025-01-28 23:06:49 +01:00
pedro d947557373 add env and fix data 2025-01-28 23:06:25 +01:00
pedro 4418e009e0 missing extension 2025-01-28 22:36:12 +01:00
4 changed files with 23 additions and 7 deletions
+1
View File
@@ -29,3 +29,4 @@ htmlcov/
.coverage.* .coverage.*
*,cover *,cover
tmp/ tmp/
docker.env
+2 -2
View File
@@ -14,7 +14,7 @@ import (
"github.com/zepyrshut/rating-orama/internal/repository" "github.com/zepyrshut/rating-orama/internal/repository"
) )
const version = "0.2.1-beta.20250128-24" const version = "0.2.3-beta.20250128-27"
const appName = "rating-orama" const appName = "rating-orama"
func init() { func init() {
@@ -28,7 +28,7 @@ var database embed.FS
var templates embed.FS var templates embed.FS
func main() { func main() {
engine := html.NewFileSystem(http.FS(templates), ".gotmpl") engine := html.NewFileSystem(http.FS(templates), ".html")
engine.Directory = "templates" engine.Directory = "templates"
app := app.NewExtendedApp(appName, version, ".env") app := app.NewExtendedApp(appName, version, ".env")
+5 -4
View File
@@ -26,6 +26,7 @@ func (hq *Handlers) GetTVShow(c *fiber.Ctx) error {
var title string var title string
var scraperEpisodes []scraper.Episode var scraperEpisodes []scraper.Episode
var sqlcTvShow sqlc.TvShow
var sqlcEpisodes []sqlc.Episode var sqlcEpisodes []sqlc.Episode
var totalVoteCount int32 var totalVoteCount int32
@@ -33,7 +34,7 @@ func (hq *Handlers) GetTVShow(c *fiber.Ctx) error {
if err != nil { if err != nil {
title, scraperEpisodes = scraper.ScrapeEpisodes(ttShowID) title, scraperEpisodes = scraper.ScrapeEpisodes(ttShowID)
//TODO: make transactional //TODO: make transactional
ttShow, err := hq.queries.CreateTVShow(c.Context(), sqlc.CreateTVShowParams{ sqlcTvShow, err = hq.queries.CreateTVShow(c.Context(), sqlc.CreateTVShowParams{
TtImdb: ttShowID, TtImdb: ttShowID,
Name: title, Name: title,
}) })
@@ -42,14 +43,15 @@ func (hq *Handlers) GetTVShow(c *fiber.Ctx) error {
return c.SendStatus(http.StatusInternalServerError) return c.SendStatus(http.StatusInternalServerError)
} }
slog.Info("ttshowid", "id", ttShow.ID) slog.Info("ttshowid", "id", sqlcTvShow.ID)
for _, episode := range scraperEpisodes { for _, episode := range scraperEpisodes {
sqlcEpisodesParams := episode.ToEpisodeParams(ttShow.ID) sqlcEpisodesParams := episode.ToEpisodeParams(sqlcTvShow.ID)
sqlcEpisode, err := hq.queries.CreateEpisodes(c.Context(), sqlcEpisodesParams) sqlcEpisode, err := hq.queries.CreateEpisodes(c.Context(), sqlcEpisodesParams)
if err != nil { if err != nil {
slog.Error("failed to create episodes", "ttid", ttShowID, "error", err) slog.Error("failed to create episodes", "ttid", ttShowID, "error", err)
return c.SendStatus(http.StatusInternalServerError) return c.SendStatus(http.StatusInternalServerError)
} }
totalVoteCount += int32(episode.VoteCount)
sqlcEpisodes = append(sqlcEpisodes, sqlcEpisode) sqlcEpisodes = append(sqlcEpisodes, sqlcEpisode)
} }
@@ -76,7 +78,6 @@ func (hq *Handlers) GetTVShow(c *fiber.Ctx) error {
return c.SendStatus(http.StatusInternalServerError) return c.SendStatus(http.StatusInternalServerError)
} }
// calculate avg rating for the show
avgRatingShow, err := hq.queries.TvShowAverageRating(c.Context(), sqlcTvShow.ID) avgRatingShow, err := hq.queries.TvShowAverageRating(c.Context(), sqlcTvShow.ID)
if err != nil { if err != nil {
slog.Error("failed to calculate avg rating for the show", "ttid", ttShowID, "error", err) slog.Error("failed to calculate avg rating for the show", "ttid", ttShowID, "error", err)
+14
View File
@@ -4,10 +4,23 @@ services:
core: core:
container_name: rating-orama container_name: rating-orama
image: rating-orama:latest image: rating-orama:latest
depends_on:
db:
condition: service_started
environment: environment:
DRIVERNAME: pgx DRIVERNAME: pgx
DATASOURCE: postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}?sslmode=disable DATASOURCE: postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}?sslmode=disable
MIGRATE: true 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: ports:
- "8086:8080" - "8086:8080"
networks: networks:
@@ -29,3 +42,4 @@ networks:
volumes: volumes:
ratingorama_data: ratingorama_data: