verification/internal/initialize/controllers.go

36 lines
1011 B
Go
Raw Normal View History

2023-06-12 14:19:10 +00:00
package initialize
import (
"penahub.gitlab.yandexcloud.net/backend/verification/internal/client"
"penahub.gitlab.yandexcloud.net/backend/verification/internal/controllers"
"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
}
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)}
}