This commit is contained in:
Kar
2024-01-08 14:00:41 +05:30
commit dbe86acfac
31 changed files with 1793 additions and 0 deletions

46
webService/movies.go Normal file
View File

@@ -0,0 +1,46 @@
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)
}

10
webService/ping.go Normal file
View File

@@ -0,0 +1,10 @@
package webService
import (
"fmt"
"net/http"
)
func (s *WebService) Ping(w http.ResponseWriter, r *http.Request) {
_, _ = fmt.Fprintf(w, "alive")
}

18
webService/routes.go Normal file
View File

@@ -0,0 +1,18 @@
package webService
import (
"gitlab.com/arkadooti.sarkar/go-boilerplate/core/appcontext"
"net/http"
)
func (s *WebService) Run(ctx appcontext.AppContext) {
s.registerPublicApis()
s.server.Start(ctx)
}
func (s *WebService) registerPublicApis() {
s.server.AddNoAuthRoutes("Ping", http.MethodGet, "/public/ping", s.Ping)
//Send movie name in query (query key: 'name')
s.server.AddNoAuthRoutes("Ping", http.MethodGet, "/public/movie-details", s.MovieDetails)
}

22
webService/webservice.go Normal file
View File

@@ -0,0 +1,22 @@
package webService
import (
"gitlab.com/arkadooti.sarkar/go-boilerplate/core/appserver"
"gitlab.com/arkadooti.sarkar/go-boilerplate/db"
"gitlab.com/arkadooti.sarkar/go-boilerplate/domain"
)
type WebService struct {
Domain domain.Domain
DB db.Databases
server appserver.AppServer
}
func NewWebService(domainService domain.Domain, db db.Databases, serviceRoute, servicePort string) *WebService {
server := appserver.NewAppServer(servicePort, serviceRoute)
return &WebService{
Domain: domainService,
DB: db,
server: server,
}
}