2023-06-12 14:19:10 +00:00
|
|
|
package initialize
|
|
|
|
|
|
|
|
import (
|
2023-07-03 11:40:20 +00:00
|
|
|
"penahub.gitlab.yandexcloud.net/backend/verification/internal/client"
|
|
|
|
"penahub.gitlab.yandexcloud.net/backend/verification/internal/controllers"
|
2024-05-26 13:50:52 +00:00
|
|
|
"penahub.gitlab.yandexcloud.net/pena-services/customer/pkg/customer_clients"
|
2023-06-12 14:19:10 +00:00
|
|
|
"reflect"
|
|
|
|
)
|
|
|
|
|
|
|
|
type Controller interface {
|
|
|
|
GetRoutes() []controllers.Route
|
|
|
|
}
|
|
|
|
|
|
|
|
type Controllers struct {
|
|
|
|
Verification *controllers.VerificationController
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c *Controllers) List() []Controller {
|
|
|
|
fields := reflect.ValueOf(c).Elem()
|
|
|
|
|
|
|
|
var controllersArr []Controller
|
|
|
|
for i := 0; i < fields.NumField(); i++ {
|
|
|
|
vf := fields.Field(i)
|
|
|
|
|
|
|
|
if vf.Type().Implements(reflect.TypeOf((*Controller)(nil)).Elem()) {
|
|
|
|
controllersArr = append(controllersArr, vf.Interface().(Controller))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return controllersArr
|
|
|
|
}
|
|
|
|
|
2024-05-26 13:50:52 +00:00
|
|
|
func NewControllers(reps *Repositories, telegram *client.Telegram, customer *customer_clients.CustomersClient) *Controllers {
|
2023-06-12 14:19:10 +00:00
|
|
|
return &Controllers{Verification: controllers.NewVerificationController(reps.Verification, telegram, customer)}
|
|
|
|
}
|