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" ) type FeedbackHandler struct { feedback *services.FeedbackService } func NewFeedbackHandler( feedback *services.FeedbackService, ) *FeedbackHandler { return &FeedbackHandler{feedback: feedback} } func (h *FeedbackHandler) CreateFeedback(params feedback.CreateFeedbackParams) middleware.Responder { err := h.feedback.Create(params.SessionUUID, params.Body) if err != nil { return feedback.NewCreateFeedbackForbidden() } return feedback.NewCreateFeedbackOK() } func (h *FeedbackHandler) GetFeedbacks(params feedback.GetFeedbacksParams) middleware.Responder { feedbacks, err := h.feedback.GetBySessionID(params.SessionUUID) 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, } }