router_gen.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package routers
  2. import (
  3. "git.qianqiusoft.com/qianqiusoft/light-apiengine/engine"
  4. "git.qianqiusoft.com/qianqiusoft/light-apiengine/entitys"
  5. "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
  6. "github.com/gin-gonic/gin"
  7. "sync"
  8. )
  9. var (
  10. _registerHandlers []func(e *engine.ApiEngine) = nil
  11. _registerHandlerMutex sync.Mutex
  12. _router map[string][]gin.HandlerFunc
  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. _registerHandlers = append(_registerHandlers, handler)
  21. }
  22. func UseMiddleware(name string, middle ...gin.HandlerFunc) {
  23. if _router == nil {
  24. _router = make(map[string][]gin.HandlerFunc)
  25. }
  26. _router[name] = append(_router[name], middle...)
  27. }
  28. func Register(e *engine.ApiEngine) {
  29. e.AddAppMoudleInitFunc("light-apiengine", DbInitFunc)
  30. _registerHandlerMutex.Lock()
  31. defer _registerHandlerMutex.Unlock()
  32. for i := range _registerHandlers {
  33. _registerHandlers[i](e)
  34. }
  35. }
  36. func DbInitFunc(domain string, e entitys.ApiEngineInterface) {
  37. if domain == "" {
  38. for _, db := range e.GetAllBusinessDb() {
  39. models.SyncDb(db)
  40. }
  41. } else {
  42. db := e.GetBusinessDb(domain)
  43. models.SyncDb(db)
  44. }
  45. }