This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"gerald/internal/interfaces/rest/models"
|
||||
"gerald/internal/interfaces/rest/restapi/operations/feedback"
|
||||
dmodels "gerald/internal/models"
|
||||
"gerald/internal/services"
|
||||
"github.com/go-openapi/runtime/middleware"
|
||||
)
|
||||
@@ -16,7 +18,7 @@ func NewFeedbackHandler(
|
||||
return &FeedbackHandler{feedback: feedback}
|
||||
}
|
||||
|
||||
func (h *FeedbackHandler) CreateFeedback(params feedback.CreateFeedbackParams, _ interface{}) middleware.Responder {
|
||||
func (h *FeedbackHandler) CreateFeedback(params feedback.CreateFeedbackParams) middleware.Responder {
|
||||
err := h.feedback.Create(params.SessionID, params.Body)
|
||||
if err != nil {
|
||||
return feedback.NewCreateFeedbackForbidden()
|
||||
@@ -25,3 +27,30 @@ func (h *FeedbackHandler) CreateFeedback(params feedback.CreateFeedbackParams, _
|
||||
return feedback.NewCreateFeedbackOK()
|
||||
|
||||
}
|
||||
|
||||
func (h *FeedbackHandler) GetFeedbacks(params feedback.GetFeedbacksParams) middleware.Responder {
|
||||
feedbacks, err := h.feedback.GetBySessionID(params.SessionID)
|
||||
if err != nil {
|
||||
return feedback.NewGetFeedbacksForbidden()
|
||||
}
|
||||
|
||||
return feedback.NewGetFeedbacksOK().WithPayload(feedbacksToAPI(feedbacks))
|
||||
}
|
||||
|
||||
func feedbacksToAPI(feedbacks []*dmodels.Feedback) []*models.Feedback {
|
||||
apiFeedbacks := make([]*models.Feedback, 0, len(feedbacks))
|
||||
for _, feedback := range feedbacks {
|
||||
apiFeedbacks = append(apiFeedbacks, feedbackToAPI(feedback))
|
||||
}
|
||||
|
||||
return apiFeedbacks
|
||||
}
|
||||
|
||||
func feedbackToAPI(feedback *dmodels.Feedback) *models.Feedback {
|
||||
return &models.Feedback{
|
||||
ProjectID: feedback.ProjectID,
|
||||
Text: feedback.Text,
|
||||
Type: feedback.Type,
|
||||
UserID: feedback.UserID,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,8 +4,10 @@ import (
|
||||
"context"
|
||||
"gerald/internal/adapters/config"
|
||||
"gerald/internal/adapters/logger"
|
||||
"gerald/internal/interfaces/rest/handlers"
|
||||
"gerald/internal/interfaces/rest/restapi"
|
||||
"gerald/internal/interfaces/rest/restapi/operations"
|
||||
"gerald/internal/interfaces/rest/restapi/operations/feedback"
|
||||
"github.com/go-openapi/loads"
|
||||
"github.com/rs/zerolog"
|
||||
"go.uber.org/fx"
|
||||
@@ -14,18 +16,21 @@ import (
|
||||
)
|
||||
|
||||
type Server struct {
|
||||
config *config.Config
|
||||
logger zerolog.Logger
|
||||
config *config.Config
|
||||
logger zerolog.Logger
|
||||
feedback *handlers.FeedbackHandler
|
||||
}
|
||||
|
||||
func NewServer(
|
||||
config *config.Config,
|
||||
logger zerolog.Logger,
|
||||
feedback *handlers.FeedbackHandler,
|
||||
|
||||
) *Server {
|
||||
return &Server{
|
||||
config: config,
|
||||
logger: logger,
|
||||
config: config,
|
||||
logger: logger,
|
||||
feedback: feedback,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,7 +47,9 @@ func StartHTTPServer(s *Server, lifecycle fx.Lifecycle) {
|
||||
api := operations.NewGeraldAPI(swaggerSpec)
|
||||
api.UseSwaggerUI()
|
||||
|
||||
//
|
||||
// Feedback
|
||||
api.FeedbackCreateFeedbackHandler = feedback.CreateFeedbackHandlerFunc(s.feedback.CreateFeedback)
|
||||
api.FeedbackGetFeedbacksHandler = feedback.GetFeedbacksHandlerFunc(s.feedback.GetFeedbacks)
|
||||
|
||||
// Add global middleware here
|
||||
server := restapi.NewServer(api)
|
||||
|
||||
Reference in New Issue
Block a user