47 lines
1.3 KiB
Go
47 lines
1.3 KiB
Go
package webService
|
|
|
|
import (
|
|
"errors"
|
|
"gitlab.com/arkadooti.sarkar/go-boilerplate/core/appcontext"
|
|
"gitlab.com/arkadooti.sarkar/go-boilerplate/core/log"
|
|
"gitlab.com/arkadooti.sarkar/go-boilerplate/utils"
|
|
"net/http"
|
|
)
|
|
|
|
func (s *WebService) MovieDetails(w http.ResponseWriter, r *http.Request) {
|
|
ctx := appcontext.UpgradeCtx(r.Context())
|
|
|
|
movieName := r.URL.Query().Get("name")
|
|
|
|
details, err := s.DB.GetMovieDetails(ctx, movieName)
|
|
if err != nil {
|
|
log.GenericError(ctx, errors.New("not able to get movies from DB:"+err.Error()))
|
|
}
|
|
|
|
if details.Title != "" {
|
|
log.GenericInfo(ctx, "Sending response from DB")
|
|
utils.ReturnOKResponse(ctx, w, details)
|
|
return
|
|
}
|
|
|
|
details, err = s.Domain.GetMovieDetailsFromApi(ctx, movieName)
|
|
if err != nil {
|
|
utils.ReturnErrorResponse(ctx, w, "Invalid request or IMDB error", http.StatusBadRequest, err)
|
|
return
|
|
}
|
|
|
|
if details.Title == "" {
|
|
utils.ReturnErrorResponse(ctx, w, "No movie found with the title: "+movieName, http.StatusBadRequest, err)
|
|
return
|
|
}
|
|
|
|
if details.Title != "" {
|
|
err = s.DB.SetMovieDetails(ctx, details)
|
|
if err != nil {
|
|
log.GenericError(ctx, errors.New("not able to insert into DB: "+err.Error()))
|
|
}
|
|
}
|
|
log.GenericInfo(ctx, "Sending response from API endpoint")
|
|
utils.ReturnOKResponse(ctx, w, details)
|
|
}
|