router.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package routers
  2. import (
  3. "git.qianqiusoft.com/qianqiusoft/light-apiengine/engine"
  4. "github.com/gin-gonic/gin"
  5. "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
  6. "sync"
  7. )
  8. var (
  9. _registerHandlers []func(e *engine.ApiEngine) = nil
  10. _registerHandlerMutex sync.Mutex
  11. _router map[string]*gin.RouterGroup
  12. )
  13. func addRegisterHandler(handler func(e *engine.ApiEngine)){
  14. _registerHandlerMutex.Lock()
  15. defer _registerHandlerMutex.Unlock()
  16. if _registerHandlers == nil{
  17. _registerHandlers = make([]func(e *engine.ApiEngine), 0)
  18. }
  19. if _router == nil {
  20. _router = make(map[string]*gin.RouterGroup)
  21. }
  22. _registerHandlers = append(_registerHandlers, handler)
  23. }
  24. func GetRouter(name string) *gin.RouterGroup {
  25. if _router == nil {
  26. return nil
  27. }
  28. return _router[name]
  29. }
  30. func Register(e *engine.ApiEngine){
  31. //models.SyncDb(e.OrmEngine)
  32. for _,db := range e.BusinessOrmEngine {
  33. models.SyncDb(db)
  34. }
  35. _registerHandlerMutex.Lock()
  36. defer _registerHandlerMutex.Unlock()
  37. for i := range _registerHandlers{
  38. _registerHandlers[i](e)
  39. }
  40. }