router.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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. "git.qianqiusoft.com/qianqiusoft/light-apiengine/entitys"
  7. "sync"
  8. )
  9. var (
  10. _registerHandlers []func(e *engine.ApiEngine) = nil
  11. _registerHandlerMutex sync.Mutex
  12. _router map[string]*gin.RouterGroup
  13. )
  14. func addRegisterHandler(handler func(e *engine.ApiEngine)){
  15. _registerHandlerMutex.Lock()
  16. defer _registerHandlerMutex.Unlock()
  17. if _registerHandlers == nil{
  18. _registerHandlers = make([]func(e *engine.ApiEngine), 0)
  19. }
  20. if _router == nil {
  21. _router = make(map[string]*gin.RouterGroup)
  22. }
  23. _registerHandlers = append(_registerHandlers, handler)
  24. }
  25. func GetRouter(name string) *gin.RouterGroup {
  26. if _router == nil {
  27. return nil
  28. }
  29. return _router[name]
  30. }
  31. func Register(e *engine.ApiEngine){
  32. e.AddAppMoudleInitFunc("ssm_backend", DbInitFunc)
  33. _registerHandlerMutex.Lock()
  34. defer _registerHandlerMutex.Unlock()
  35. for i := range _registerHandlers{
  36. _registerHandlers[i](e)
  37. }
  38. }
  39. func DbInitFunc(e entitys.ApiEngineInterface) {
  40. for _,db := range e.GetAllBusinessDb() {
  41. models.SyncDb(db)
  42. }
  43. }