router_gen.go 1.4 KB

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