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) }