change init routes in server
This commit is contained in:
parent
9adc2f6465
commit
a6f1bdfb68
2
.env
2
.env
@ -5,7 +5,7 @@ HTTP_PORT="8080"
|
|||||||
|
|
||||||
# MongoDB settings
|
# MongoDB settings
|
||||||
MONGO_HOST="127.0.0.1"
|
MONGO_HOST="127.0.0.1"
|
||||||
MONGO_PORT="27020"
|
MONGO_PORT="27021"
|
||||||
MONGO_USER="test"
|
MONGO_USER="test"
|
||||||
MONGO_PASSWORD="test"
|
MONGO_PASSWORD="test"
|
||||||
MONGO_DB="admin"
|
MONGO_DB="admin"
|
||||||
|
@ -12,7 +12,6 @@ import (
|
|||||||
"codeword/pkg/closer"
|
"codeword/pkg/closer"
|
||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
"github.com/twmb/franz-go/pkg/kgo"
|
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
@ -42,26 +41,26 @@ func Run(ctx context.Context, cfg initialize.Config, logger *zap.Logger) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
kafkaTariffClient, err := kgo.NewClient(
|
//kafkaTariffClient, err := kgo.NewClient(
|
||||||
kgo.SeedBrokers(cfg.KafkaBrokers),
|
// kgo.SeedBrokers(cfg.KafkaBrokers),
|
||||||
kgo.ConsumeResetOffset(kgo.NewOffset().AtStart()),
|
// kgo.ConsumeResetOffset(kgo.NewOffset().AtStart()),
|
||||||
kgo.DefaultProduceTopic(cfg.KafkaTopic),
|
// kgo.DefaultProduceTopic(cfg.KafkaTopic),
|
||||||
)
|
//)
|
||||||
if err != nil {
|
//if err != nil {
|
||||||
return err
|
// return err
|
||||||
}
|
//}
|
||||||
|
|
||||||
discountRpcClient, err := initialize.DiscountGRPCClient(cfg.DiscountServiceAddress)
|
//discountRpcClient, err := initialize.DiscountGRPCClient(cfg.DiscountServiceAddress)
|
||||||
if err != nil {
|
//if err != nil {
|
||||||
logger.Error("failed to connect to discount service", zap.Error(err))
|
// logger.Error("failed to connect to discount service", zap.Error(err))
|
||||||
return err
|
// return err
|
||||||
}
|
//}
|
||||||
|
//
|
||||||
brokers := initialize.NewBrokers(initialize.BrokersDeps{
|
//brokers := initialize.NewBrokers(initialize.BrokersDeps{
|
||||||
Logger: logger,
|
// Logger: logger,
|
||||||
TariffClient: kafkaTariffClient,
|
// TariffClient: kafkaTariffClient,
|
||||||
Topic: cfg.KafkaTopic,
|
// Topic: cfg.KafkaTopic,
|
||||||
})
|
//})
|
||||||
|
|
||||||
rdb, err := initialize.Redis(ctx, cfg)
|
rdb, err := initialize.Redis(ctx, cfg)
|
||||||
encrypt := initialize.Encrypt(cfg)
|
encrypt := initialize.Encrypt(cfg)
|
||||||
@ -83,11 +82,11 @@ func Run(ctx context.Context, cfg initialize.Config, logger *zap.Logger) error {
|
|||||||
})
|
})
|
||||||
|
|
||||||
promoService := services.NewPromoCodeService(services.PromoDeps{
|
promoService := services.NewPromoCodeService(services.PromoDeps{
|
||||||
Logger: logger,
|
Logger: logger,
|
||||||
PromoCodeRepo: promoCodeRepo,
|
PromoCodeRepo: promoCodeRepo,
|
||||||
StatsRepo: statsRepo,
|
StatsRepo: statsRepo,
|
||||||
Kafka: brokers.TariffProducer,
|
//Kafka: brokers.TariffProducer,
|
||||||
DiscountClient: discountRpcClient,
|
//DiscountClient: discountRpcClient,
|
||||||
})
|
})
|
||||||
|
|
||||||
recoveryController := recovery.NewRecoveryController(logger, recoveryService, cfg.DefaultRedirectionURL)
|
recoveryController := recovery.NewRecoveryController(logger, recoveryService, cfg.DefaultRedirectionURL)
|
||||||
@ -109,9 +108,8 @@ func Run(ctx context.Context, cfg initialize.Config, logger *zap.Logger) error {
|
|||||||
go purgeWC.Start(ctx)
|
go purgeWC.Start(ctx)
|
||||||
|
|
||||||
server := httpserver.NewServer(httpserver.ServerConfig{
|
server := httpserver.NewServer(httpserver.ServerConfig{
|
||||||
Logger: logger,
|
Logger: logger,
|
||||||
RecoveryController: recoveryController,
|
Controllers: []httpserver.Controller{recoveryController, promoCodeController},
|
||||||
PromoCodeController: promoCodeController,
|
|
||||||
})
|
})
|
||||||
|
|
||||||
go func() {
|
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(server.Shutdown))
|
||||||
shutdownGroup.Add(closer.CloserFunc(mdb.Client().Disconnect))
|
shutdownGroup.Add(closer.CloserFunc(mdb.Client().Disconnect))
|
||||||
shutdownGroup.Add(closer.CloserFunc(recoveryWC.Stop))
|
shutdownGroup.Add(closer.CloserFunc(recoveryWC.Stop))
|
||||||
|
18
internal/controller/promocode/route.go
Normal file
18
internal/controller/promocode/route.go
Normal file
@ -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 {
|
func (r *RecoveryController) HandlePingDB(c *fiber.Ctx) error {
|
||||||
startTime := time.Now()
|
startTime := time.Now()
|
||||||
if err := r.service.Ping(c.Context()); err != nil {
|
if err := r.service.Ping(c.Context()); err != nil {
|
||||||
|
14
internal/controller/recovery/route.go
Normal file
14
internal/controller/recovery/route.go
Normal file
@ -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,34 +1,30 @@
|
|||||||
package http
|
package http
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"codeword/internal/controller/promocode"
|
|
||||||
"codeword/internal/controller/recovery"
|
|
||||||
"context"
|
"context"
|
||||||
|
"fmt"
|
||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ServerConfig struct {
|
type ServerConfig struct {
|
||||||
Logger *zap.Logger
|
Logger *zap.Logger
|
||||||
RecoveryController *recovery.RecoveryController
|
Controllers []Controller
|
||||||
PromoCodeController *promocode.PromoCodeController
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type Server struct {
|
type Server struct {
|
||||||
Logger *zap.Logger
|
Logger *zap.Logger
|
||||||
RecoveryController *recovery.RecoveryController
|
Controllers []Controller
|
||||||
PromoCodeController *promocode.PromoCodeController
|
app *fiber.App
|
||||||
app *fiber.App
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewServer(config ServerConfig) *Server {
|
func NewServer(config ServerConfig) *Server {
|
||||||
app := fiber.New()
|
app := fiber.New()
|
||||||
|
|
||||||
s := &Server{
|
s := &Server{
|
||||||
Logger: config.Logger,
|
Logger: config.Logger,
|
||||||
RecoveryController: config.RecoveryController,
|
Controllers: config.Controllers,
|
||||||
PromoCodeController: config.PromoCodeController,
|
app: app,
|
||||||
app: app,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
s.registerRoutes()
|
s.registerRoutes()
|
||||||
@ -49,22 +45,22 @@ func (s *Server) Shutdown(ctx context.Context) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) registerRoutes() {
|
func (s *Server) registerRoutes() {
|
||||||
s.app.Get("/liveness", s.handleLiveness)
|
for _, c := range s.Controllers {
|
||||||
s.app.Get("/readiness", s.RecoveryController.HandlePingDB)
|
router := s.app.Group(c.Name())
|
||||||
|
c.Register(router)
|
||||||
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
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) handleLiveness(c *fiber.Ctx) error {
|
type Controller interface {
|
||||||
return c.SendStatus(fiber.StatusOK)
|
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)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user