verification/internal/initialize/controllers.go
Danil Solovyov 7d677a2d83 Version 0.1
2023-06-12 19:19:10 +05:00

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)}
}