controller.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package mhayaGin
  2. import (
  3. "github.com/gin-gonic/gin"
  4. cfacade "github.com/mhaya/facade"
  5. )
  6. type GinHandlerFunc func(ctx *Context)
  7. type IController interface {
  8. PreInit(app cfacade.IApplication, engine *gin.Engine)
  9. Init()
  10. Stop()
  11. }
  12. func BindHandlers(handlers []GinHandlerFunc) []gin.HandlerFunc {
  13. var list []gin.HandlerFunc
  14. for _, handler := range handlers {
  15. list = append(list, BindHandler(handler))
  16. }
  17. return list
  18. }
  19. func BindHandler(handler func(ctx *Context)) gin.HandlerFunc {
  20. return func(c *gin.Context) {
  21. context := new(Context)
  22. context.Context = c
  23. handler(context)
  24. }
  25. }
  26. type BaseController struct {
  27. App cfacade.IApplication
  28. Engine *gin.Engine
  29. }
  30. func (b *BaseController) PreInit(app cfacade.IApplication, engine *gin.Engine) {
  31. b.App = app
  32. b.Engine = engine
  33. }
  34. func (b *BaseController) Init() {
  35. }
  36. func (b *BaseController) Stop() {
  37. }
  38. func (b *BaseController) Group(relativePath string, handlers ...GinHandlerFunc) *Group {
  39. group := &Group{
  40. RouterGroup: b.Engine.Group(relativePath, BindHandlers(handlers)...),
  41. }
  42. return group
  43. }
  44. func (b *BaseController) Any(relativePath string, handlers ...GinHandlerFunc) {
  45. b.Engine.Any(relativePath, BindHandlers(handlers)...)
  46. }
  47. func (b *BaseController) GET(relativePath string, handlers ...GinHandlerFunc) {
  48. b.Engine.GET(relativePath, BindHandlers(handlers)...)
  49. }
  50. func (b *BaseController) POST(relativePath string, handlers ...GinHandlerFunc) {
  51. b.Engine.POST(relativePath, BindHandlers(handlers)...)
  52. }