feedback/internal/initialize/controllers.go

42 lines
1.0 KiB
Go
Raw Permalink Normal View History

2023-04-20 02:03:21 +00:00
package initialize
import (
"github.com/gofiber/fiber/v2"
"go.uber.org/zap"
2024-11-25 08:48:06 +00:00
"gitea.pena/PenaSide/feedback/internal/client"
"gitea.pena/PenaSide/feedback/internal/controller"
"gitea.pena/PenaSide/feedback/internal/repository"
2023-04-20 02:03:21 +00:00
"reflect"
)
type Controller interface {
Register() (method, path, name string, handler fiber.Handler)
Handler(c *fiber.Ctx) error
}
type Controllers struct {
Feedback *controller.FeedbackController
}
// List - возвращает список контроллеров
func (c *Controllers) List() []Controller {
fields := reflect.ValueOf(c).Elem()
var controllers []Controller
for i := 0; i < fields.NumField(); i++ {
vf := fields.Field(i)
if vf.Type().Implements(reflect.TypeOf((*Controller)(nil)).Elem()) {
controllers = append(controllers, vf.Interface().(Controller))
}
}
return controllers
}
func NewControllers(logger *zap.Logger, rep *repository.FeedbackRepository, tg *client.Telegram) *Controllers {
return &Controllers{
Feedback: controller.NewFeedbackController(logger, rep, tg),
}
}