35 lines
838 B
Go
35 lines
838 B
Go
![]() |
package initialize
|
||
|
|
||
|
import (
|
||
|
"reflect"
|
||
|
"verification/internal/client"
|
||
|
"verification/internal/controllers"
|
||
|
)
|
||
|
|
||
|
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 *client.Customer) *Controllers {
|
||
|
return &Controllers{Verification: controllers.NewVerificationController(reps.Verification, telegram, customer)}
|
||
|
}
|