2023-12-29 11:30:20 +00:00
|
|
|
package http
|
|
|
|
|
|
|
|
import (
|
2024-01-11 18:20:33 +00:00
|
|
|
"codeword/internal/controller/promocode"
|
|
|
|
"codeword/internal/controller/recovery"
|
2023-12-29 11:30:20 +00:00
|
|
|
"context"
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
|
|
"go.uber.org/zap"
|
|
|
|
)
|
|
|
|
|
|
|
|
type ServerConfig struct {
|
2024-01-11 16:29:53 +00:00
|
|
|
Logger *zap.Logger
|
2024-01-11 18:20:33 +00:00
|
|
|
RecoveryController *recovery.RecoveryController
|
|
|
|
PromoCodeController *promocode.PromoCodeController
|
2023-12-29 11:30:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
type Server struct {
|
2024-01-11 16:29:53 +00:00
|
|
|
Logger *zap.Logger
|
2024-01-11 18:20:33 +00:00
|
|
|
RecoveryController *recovery.RecoveryController
|
|
|
|
PromoCodeController *promocode.PromoCodeController
|
2024-01-11 16:29:53 +00:00
|
|
|
app *fiber.App
|
2023-12-29 11:30:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func NewServer(config ServerConfig) *Server {
|
|
|
|
app := fiber.New()
|
|
|
|
|
|
|
|
s := &Server{
|
2024-01-11 18:20:33 +00:00
|
|
|
Logger: config.Logger,
|
|
|
|
RecoveryController: config.RecoveryController,
|
|
|
|
PromoCodeController: config.PromoCodeController,
|
|
|
|
app: app,
|
2023-12-29 11:30:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
s.registerRoutes()
|
|
|
|
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
2023-12-29 18:02:50 +00:00
|
|
|
func (s *Server) Start(addr string) error {
|
2024-01-11 12:07:17 +00:00
|
|
|
if err := s.app.Listen(addr); err != nil {
|
|
|
|
s.Logger.Error("Failed to start server", zap.Error(err))
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
2023-12-29 18:02:50 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (s *Server) Shutdown(ctx context.Context) error {
|
|
|
|
return s.app.Shutdown()
|
|
|
|
}
|
|
|
|
|
2023-12-29 11:30:20 +00:00
|
|
|
func (s *Server) registerRoutes() {
|
|
|
|
s.app.Get("/liveness", s.handleLiveness)
|
2024-01-15 08:43:55 +00:00
|
|
|
s.app.Get("/readiness", s.RecoveryController.HandlePingDB)
|
2023-12-29 11:30:20 +00:00
|
|
|
|
|
|
|
s.app.Post("/recover", s.RecoveryController.HandleRecoveryRequest)
|
|
|
|
s.app.Get("/recover/:sign", s.RecoveryController.HandleRecoveryLink)
|
2024-01-11 16:29:53 +00:00
|
|
|
|
|
|
|
s.app.Post("/promocode/create", s.PromoCodeController.CreatePromoCode)
|
2024-01-11 19:47:54 +00:00
|
|
|
s.app.Put("/promocode/edit", s.PromoCodeController.EditPromoCode)
|
2024-01-12 11:28:22 +00:00
|
|
|
s.app.Post("/promocode/getList", s.PromoCodeController.GetList)
|
2024-01-12 13:46:36 +00:00
|
|
|
s.app.Post("/promocode/activate", s.PromoCodeController.Activate)
|
2024-01-12 14:50:53 +00:00
|
|
|
s.app.Delete("/promocode/:promocodeID", s.PromoCodeController.Delete)
|
2024-01-14 14:18:36 +00:00
|
|
|
s.app.Post("/promocode/fastlink", s.PromoCodeController.CreateFastLink)
|
2024-01-27 12:51:32 +00:00
|
|
|
s.app.Get("/promocode/stats", s.PromoCodeController.GetAllStats)
|
2023-12-29 11:30:20 +00:00
|
|
|
//... other
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *Server) handleLiveness(c *fiber.Ctx) error {
|
|
|
|
return c.SendStatus(fiber.StatusOK)
|
|
|
|
}
|