Added movie page and route handler

This commit is contained in:
2025-02-23 16:06:47 +11:00
parent 725038009a
commit e794024786
3 changed files with 70 additions and 0 deletions

37
handler/movie.go Normal file
View File

@@ -0,0 +1,37 @@
package handler
import (
"net/http"
"projectreshoot/config"
"projectreshoot/tmdb"
"projectreshoot/view/page"
"strconv"
"github.com/rs/zerolog"
)
func Movie(
logger *zerolog.Logger,
config *config.Config,
) http.Handler {
return http.HandlerFunc(
func(w http.ResponseWriter, r *http.Request) {
id := r.PathValue("movie_id")
movie_id, err := strconv.ParseInt(id, 10, 32)
if err != nil {
ErrorPage(http.StatusNotFound, w, r)
logger.Error().Err(err).Str("movie_id", id).
Msg("Error occured getting the movie")
return
}
movie, err := tmdb.GetMovie(int32(movie_id), config.TMDBToken)
if err != nil {
ErrorPage(http.StatusInternalServerError, w, r)
logger.Error().Err(err).Int32("movie_id", int32(movie_id)).
Msg("Error occured getting the movie")
return
}
page.Movie(movie).Render(r.Context(), w)
},
)
}

View File

@@ -60,4 +60,7 @@ func addRoutes(
route("POST /change-username", loggedIn(fresh(handler.ChangeUsername(logger, conn))))
route("POST /change-bio", loggedIn(handler.ChangeBio(logger, conn)))
route("POST /change-password", loggedIn(fresh(handler.ChangePassword(logger, conn))))
// Movie page
route("GET /movie/{movie_id}", handler.Movie(logger, config))
}

30
view/page/movie.templ Normal file
View File

@@ -0,0 +1,30 @@
package page
import "projectreshoot/tmdb"
import "projectreshoot/view/layout"
import "fmt"
func formatRuntime(minutes int) string {
hours := minutes / 60
mins := minutes % 60
return fmt.Sprintf("%dh %02dm", hours, mins)
}
templ Movie(movie *tmdb.Movie) {
@layout.Global() {
<div class="bg-surface0">
<div class="">
<div class="bg-overlay2">{ movie.Poster }</div>
<div class="">
<span class="">
{ movie.Title }
</span>
<span class="">
{ formatRuntime(movie.Runtime) }
- { movie.ReleaseDate[:4] }
</span>
</div>
</div>
</div>
}
}