[feat] 完善 Router.Call Router.Get 方法

This commit is contained in:
what 2024-11-26 16:45:45 +08:00
parent 4ef8c130a7
commit fd3625802b

View File

@ -80,8 +80,8 @@ type RouteMiddleware interface {
}
type Router interface {
Call(r *http.Request, code string, params map[string]any, category ...RouteCategory) (HttpResponse, error)
Get(uuid string, category ...RouteCategory) (Route, bool)
Call(r *http.Request, code string, params map[string]any, opts ..._RouteFilter) (HttpResponse, error)
Get(uuid string, opts ..._RouteFilter) (Route, bool)
Register(cr chi.Router)
RefreshRoutes() error
}
@ -107,3 +107,28 @@ type RouteParam interface {
IsRequired() bool
InjectRequestToGlobalParams(*http.Request, GlobalParams) error
}
type _RouteFilter func(opts *RouteFilterOption)
type RouteFilterOption struct {
categories []RouteCategory
services []RouteService
}
func (this RouteFilterOption) RouteCategories() []RouteCategory {
return this.categories
}
func (this RouteFilterOption) RouteServices() []RouteService {
return this.services
}
func RouteFilter[T RouteCategory | RouteService](v T) _RouteFilter {
return func(opt *RouteFilterOption) {
switch value := any(v).(type) {
case RouteCategory:
opt.categories = append(opt.categories, value)
case RouteService:
opt.services = append(opt.services, value)
}
}
}