update
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2024-04-20 17:37:13 +03:00
parent b13d319616
commit e3d5d4935c
4 changed files with 49 additions and 11 deletions

View File

@@ -2,7 +2,7 @@ x-custom: &envs
SERVING_PORT: 8080
MIGRATION_MODE: "on"
LOGGING_LEVEL: debug
POSTGRES_DSN: "host=pg port=2345 dbname=gerald user=gerald password=wR7gP2kD9qLxVzT3mBc sslmode=disable"
POSTGRES_DSN: "host=pg port=5432 dbname=gerald user=gerald password=wR7gP2kD9qLxVzT3mBc sslmode=disable"
x-custom-pg: &envs-pg
POSTGRES_USER: "gerald"
@@ -54,7 +54,7 @@ services:
- traefik.http.routers.gerald.entrypoints=websecure
- traefik.http.routers.gerald.tls=true
- traefik.http.routers.gerald.tls.certresolver=letsEncrypt
- traefik.http.routers.gerald.rule=Host(`api.2phon.com`) || Host(`gerald-srv.octagon-lab.com`)
- traefik.http.routers.gerald.rule=Host(`gerald-srv.octagon-lab.com`)
- traefik.http.services.gerald.loadbalancer.server.port=8080
- traefik.http.middlewares.gerald-ratelimit.ratelimit.average=5
- traefik.http.middlewares.gerald-ratelimit.ratelimit.burst=10

View File

@@ -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,
}
}

View File

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

View File

@@ -3,8 +3,10 @@ package models
import "github.com/google/uuid"
type Feedback struct {
UUID string `gorm:"primaryKey"`
UserUUID string `gorm:"type:varchar(255)"`
UUID string `gorm:"primaryKey"`
UserID string `gorm:"type:varchar(255)"`
ProjectID string `gorm:"type:varchar(255)"`
SessionUUID string `gorm:"type:varchar(255)"`
Type string `gorm:"type:varchar(255)"`
@@ -14,7 +16,7 @@ type Feedback struct {
func NewFeedback(userUUID, sessionUUID, ticketType, text string) *Feedback {
return &Feedback{
UUID: uuid.New().String(),
UserUUID: userUUID,
UserID: userUUID,
SessionUUID: sessionUUID,
Type: ticketType,
Text: text,