This commit is contained in:
@@ -2,7 +2,7 @@ x-custom: &envs
|
|||||||
SERVING_PORT: 8080
|
SERVING_PORT: 8080
|
||||||
MIGRATION_MODE: "on"
|
MIGRATION_MODE: "on"
|
||||||
LOGGING_LEVEL: debug
|
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
|
x-custom-pg: &envs-pg
|
||||||
POSTGRES_USER: "gerald"
|
POSTGRES_USER: "gerald"
|
||||||
@@ -54,7 +54,7 @@ services:
|
|||||||
- traefik.http.routers.gerald.entrypoints=websecure
|
- traefik.http.routers.gerald.entrypoints=websecure
|
||||||
- traefik.http.routers.gerald.tls=true
|
- traefik.http.routers.gerald.tls=true
|
||||||
- traefik.http.routers.gerald.tls.certresolver=letsEncrypt
|
- 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.services.gerald.loadbalancer.server.port=8080
|
||||||
- traefik.http.middlewares.gerald-ratelimit.ratelimit.average=5
|
- traefik.http.middlewares.gerald-ratelimit.ratelimit.average=5
|
||||||
- traefik.http.middlewares.gerald-ratelimit.ratelimit.burst=10
|
- traefik.http.middlewares.gerald-ratelimit.ratelimit.burst=10
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
package handlers
|
package handlers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"gerald/internal/interfaces/rest/models"
|
||||||
"gerald/internal/interfaces/rest/restapi/operations/feedback"
|
"gerald/internal/interfaces/rest/restapi/operations/feedback"
|
||||||
|
dmodels "gerald/internal/models"
|
||||||
"gerald/internal/services"
|
"gerald/internal/services"
|
||||||
"github.com/go-openapi/runtime/middleware"
|
"github.com/go-openapi/runtime/middleware"
|
||||||
)
|
)
|
||||||
@@ -16,7 +18,7 @@ func NewFeedbackHandler(
|
|||||||
return &FeedbackHandler{feedback: feedback}
|
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)
|
err := h.feedback.Create(params.SessionID, params.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return feedback.NewCreateFeedbackForbidden()
|
return feedback.NewCreateFeedbackForbidden()
|
||||||
@@ -25,3 +27,30 @@ func (h *FeedbackHandler) CreateFeedback(params feedback.CreateFeedbackParams, _
|
|||||||
return feedback.NewCreateFeedbackOK()
|
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"
|
"context"
|
||||||
"gerald/internal/adapters/config"
|
"gerald/internal/adapters/config"
|
||||||
"gerald/internal/adapters/logger"
|
"gerald/internal/adapters/logger"
|
||||||
|
"gerald/internal/interfaces/rest/handlers"
|
||||||
"gerald/internal/interfaces/rest/restapi"
|
"gerald/internal/interfaces/rest/restapi"
|
||||||
"gerald/internal/interfaces/rest/restapi/operations"
|
"gerald/internal/interfaces/rest/restapi/operations"
|
||||||
|
"gerald/internal/interfaces/rest/restapi/operations/feedback"
|
||||||
"github.com/go-openapi/loads"
|
"github.com/go-openapi/loads"
|
||||||
"github.com/rs/zerolog"
|
"github.com/rs/zerolog"
|
||||||
"go.uber.org/fx"
|
"go.uber.org/fx"
|
||||||
@@ -16,16 +18,19 @@ import (
|
|||||||
type Server struct {
|
type Server struct {
|
||||||
config *config.Config
|
config *config.Config
|
||||||
logger zerolog.Logger
|
logger zerolog.Logger
|
||||||
|
feedback *handlers.FeedbackHandler
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewServer(
|
func NewServer(
|
||||||
config *config.Config,
|
config *config.Config,
|
||||||
logger zerolog.Logger,
|
logger zerolog.Logger,
|
||||||
|
feedback *handlers.FeedbackHandler,
|
||||||
|
|
||||||
) *Server {
|
) *Server {
|
||||||
return &Server{
|
return &Server{
|
||||||
config: config,
|
config: config,
|
||||||
logger: logger,
|
logger: logger,
|
||||||
|
feedback: feedback,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -42,7 +47,9 @@ func StartHTTPServer(s *Server, lifecycle fx.Lifecycle) {
|
|||||||
api := operations.NewGeraldAPI(swaggerSpec)
|
api := operations.NewGeraldAPI(swaggerSpec)
|
||||||
api.UseSwaggerUI()
|
api.UseSwaggerUI()
|
||||||
|
|
||||||
//
|
// Feedback
|
||||||
|
api.FeedbackCreateFeedbackHandler = feedback.CreateFeedbackHandlerFunc(s.feedback.CreateFeedback)
|
||||||
|
api.FeedbackGetFeedbacksHandler = feedback.GetFeedbacksHandlerFunc(s.feedback.GetFeedbacks)
|
||||||
|
|
||||||
// Add global middleware here
|
// Add global middleware here
|
||||||
server := restapi.NewServer(api)
|
server := restapi.NewServer(api)
|
||||||
|
|||||||
@@ -4,7 +4,9 @@ import "github.com/google/uuid"
|
|||||||
|
|
||||||
type Feedback struct {
|
type Feedback struct {
|
||||||
UUID string `gorm:"primaryKey"`
|
UUID string `gorm:"primaryKey"`
|
||||||
UserUUID string `gorm:"type:varchar(255)"`
|
UserID string `gorm:"type:varchar(255)"`
|
||||||
|
ProjectID string `gorm:"type:varchar(255)"`
|
||||||
|
|
||||||
SessionUUID string `gorm:"type:varchar(255)"`
|
SessionUUID string `gorm:"type:varchar(255)"`
|
||||||
|
|
||||||
Type 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 {
|
func NewFeedback(userUUID, sessionUUID, ticketType, text string) *Feedback {
|
||||||
return &Feedback{
|
return &Feedback{
|
||||||
UUID: uuid.New().String(),
|
UUID: uuid.New().String(),
|
||||||
UserUUID: userUUID,
|
UserID: userUUID,
|
||||||
SessionUUID: sessionUUID,
|
SessionUUID: sessionUUID,
|
||||||
Type: ticketType,
|
Type: ticketType,
|
||||||
Text: text,
|
Text: text,
|
||||||
|
|||||||
Reference in New Issue
Block a user