change init routes in server

This commit is contained in:
Pavel 2024-02-25 15:00:05 +03:00
parent 9adc2f6465
commit a6f1bdfb68
6 changed files with 90 additions and 58 deletions

2
.env

@ -5,7 +5,7 @@ HTTP_PORT="8080"
# MongoDB settings
MONGO_HOST="127.0.0.1"
MONGO_PORT="27020"
MONGO_PORT="27021"
MONGO_USER="test"
MONGO_PASSWORD="test"
MONGO_DB="admin"

@ -12,7 +12,6 @@ import (
"codeword/pkg/closer"
"context"
"errors"
"github.com/twmb/franz-go/pkg/kgo"
"go.uber.org/zap"
"time"
)
@ -42,26 +41,26 @@ func Run(ctx context.Context, cfg initialize.Config, logger *zap.Logger) error {
return err
}
kafkaTariffClient, err := kgo.NewClient(
kgo.SeedBrokers(cfg.KafkaBrokers),
kgo.ConsumeResetOffset(kgo.NewOffset().AtStart()),
kgo.DefaultProduceTopic(cfg.KafkaTopic),
)
if err != nil {
return err
}
//kafkaTariffClient, err := kgo.NewClient(
// kgo.SeedBrokers(cfg.KafkaBrokers),
// kgo.ConsumeResetOffset(kgo.NewOffset().AtStart()),
// kgo.DefaultProduceTopic(cfg.KafkaTopic),
//)
//if err != nil {
// return err
//}
discountRpcClient, err := initialize.DiscountGRPCClient(cfg.DiscountServiceAddress)
if err != nil {
logger.Error("failed to connect to discount service", zap.Error(err))
return err
}
brokers := initialize.NewBrokers(initialize.BrokersDeps{
Logger: logger,
TariffClient: kafkaTariffClient,
Topic: cfg.KafkaTopic,
})
//discountRpcClient, err := initialize.DiscountGRPCClient(cfg.DiscountServiceAddress)
//if err != nil {
// logger.Error("failed to connect to discount service", zap.Error(err))
// return err
//}
//
//brokers := initialize.NewBrokers(initialize.BrokersDeps{
// Logger: logger,
// TariffClient: kafkaTariffClient,
// Topic: cfg.KafkaTopic,
//})
rdb, err := initialize.Redis(ctx, cfg)
encrypt := initialize.Encrypt(cfg)
@ -86,8 +85,8 @@ func Run(ctx context.Context, cfg initialize.Config, logger *zap.Logger) error {
Logger: logger,
PromoCodeRepo: promoCodeRepo,
StatsRepo: statsRepo,
Kafka: brokers.TariffProducer,
DiscountClient: discountRpcClient,
//Kafka: brokers.TariffProducer,
//DiscountClient: discountRpcClient,
})
recoveryController := recovery.NewRecoveryController(logger, recoveryService, cfg.DefaultRedirectionURL)
@ -110,8 +109,7 @@ func Run(ctx context.Context, cfg initialize.Config, logger *zap.Logger) error {
server := httpserver.NewServer(httpserver.ServerConfig{
Logger: logger,
RecoveryController: recoveryController,
PromoCodeController: promoCodeController,
Controllers: []httpserver.Controller{recoveryController, promoCodeController},
})
go func() {
@ -121,6 +119,8 @@ func Run(ctx context.Context, cfg initialize.Config, logger *zap.Logger) error {
}
}()
server.ListRoutes()
shutdownGroup.Add(closer.CloserFunc(server.Shutdown))
shutdownGroup.Add(closer.CloserFunc(mdb.Client().Disconnect))
shutdownGroup.Add(closer.CloserFunc(recoveryWC.Stop))

@ -0,0 +1,18 @@
package promocode
import "github.com/gofiber/fiber/v2"
func (p *PromoCodeController) Register(router fiber.Router) {
router.Post("/create", p.CreatePromoCode)
router.Put("/edit", p.EditPromoCode)
router.Post("/getList", p.GetList)
router.Post("/activate", p.Activate)
router.Delete("/:promocodeID", p.Delete)
router.Post("/fastlink", p.CreateFastLink)
router.Get("/stats", p.GetAllStats)
}
func (p *PromoCodeController) Name() string {
return "promocode"
}

@ -26,6 +26,10 @@ func NewRecoveryController(logger *zap.Logger, service *services.RecoveryService
}
}
func (r *RecoveryController) HandleLiveness(c *fiber.Ctx) error {
return c.SendStatus(fiber.StatusOK)
}
func (r *RecoveryController) HandlePingDB(c *fiber.Ctx) error {
startTime := time.Now()
if err := r.service.Ping(c.Context()); err != nil {

@ -0,0 +1,14 @@
package recovery
import "github.com/gofiber/fiber/v2"
func (r *RecoveryController) Register(router fiber.Router) {
router.Get("/liveness", r.HandleLiveness)
router.Get("/readiness", r.HandlePingDB)
router.Post("/recover", r.HandleRecoveryRequest)
router.Get("/recover/:sign", r.HandleRecoveryLink)
}
func (r *RecoveryController) Name() string {
return ""
}

@ -1,23 +1,20 @@
package http
import (
"codeword/internal/controller/promocode"
"codeword/internal/controller/recovery"
"context"
"fmt"
"github.com/gofiber/fiber/v2"
"go.uber.org/zap"
)
type ServerConfig struct {
Logger *zap.Logger
RecoveryController *recovery.RecoveryController
PromoCodeController *promocode.PromoCodeController
Controllers []Controller
}
type Server struct {
Logger *zap.Logger
RecoveryController *recovery.RecoveryController
PromoCodeController *promocode.PromoCodeController
Controllers []Controller
app *fiber.App
}
@ -26,8 +23,7 @@ func NewServer(config ServerConfig) *Server {
s := &Server{
Logger: config.Logger,
RecoveryController: config.RecoveryController,
PromoCodeController: config.PromoCodeController,
Controllers: config.Controllers,
app: app,
}
@ -49,22 +45,22 @@ func (s *Server) Shutdown(ctx context.Context) error {
}
func (s *Server) registerRoutes() {
s.app.Get("/liveness", s.handleLiveness)
s.app.Get("/readiness", s.RecoveryController.HandlePingDB)
s.app.Post("/recover", s.RecoveryController.HandleRecoveryRequest)
s.app.Get("/recover/:sign", s.RecoveryController.HandleRecoveryLink)
s.app.Post("/promocode/create", s.PromoCodeController.CreatePromoCode)
s.app.Put("/promocode/edit", s.PromoCodeController.EditPromoCode)
s.app.Post("/promocode/getList", s.PromoCodeController.GetList)
s.app.Post("/promocode/activate", s.PromoCodeController.Activate)
s.app.Delete("/promocode/:promocodeID", s.PromoCodeController.Delete)
s.app.Post("/promocode/fastlink", s.PromoCodeController.CreateFastLink)
s.app.Get("/promocode/stats", s.PromoCodeController.GetAllStats)
//... other
for _, c := range s.Controllers {
router := s.app.Group(c.Name())
c.Register(router)
}
}
func (s *Server) handleLiveness(c *fiber.Ctx) error {
return c.SendStatus(fiber.StatusOK)
type Controller interface {
Register(router fiber.Router)
Name() string
}
func (s *Server) ListRoutes() {
fmt.Println("Registered routes:")
for _, stack := range s.app.Stack() {
for _, route := range stack {
fmt.Printf("%s %s\n", route.Method, route.Path)
}
}
}