router_gen.go 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package apigen
  2. import "git.qianqiusoft.com/qianqiusoft/light-apiengine-client/code_gen/utils"
  3. const routerTemplate = `
  4. package routers
  5. import (
  6. "git.qianqiusoft.com/qianqiusoft/light-apiengine/engine"
  7. {{if ne .data.SkipLogin true}}"git.qianqiusoft.com/qianqiusoft/light-apiengine/middleware"{{end}}
  8. "{{.app.ApplicationName}}/controllers/gen"
  9. )
  10. func init(){
  11. addRegisterHandler(register{{CamelizeStr .data.Name true}}Router)
  12. }
  13. func register{{CamelizeStr .data.Name true}}Router(e *engine.ApiEngine){
  14. api:=e.GinEngine.Group("/api")
  15. v1:=api.Group("/v1/{{.data.Name}}")
  16. {{if ne .data.SkipLogin true}}v1.Use(middleware.LoginWare()){{end}}
  17. if len(_router["{{.data.Name}}"]) >0 {
  18. v1.Use(_router["{{.data.Name}}"]...)
  19. }
  20. ctrler := gen.New{{CamelizeStr .data.Name true}}Controller(e)
  21. {{range .data.Apis}}
  22. {{if not (Contains .Method "get")}}//{{end}}v1.GET("/{{.Name}}",ctrler.{{CamelizeStr .Name true}})
  23. {{if not (Contains .Method "post")}}//{{end}}v1.POST("/{{.Name}}",ctrler.{{CamelizeStr .Name true}})
  24. {{end}}
  25. }
  26. `
  27. func GenRouter(templateData interface{}, params map[string]interface{}) ([]byte, error) {
  28. return utils.GenTemplate(routerTemplate, templateData, params)
  29. }
  30. func GenRouterGenGo(templateData interface{}, params map[string]interface{}) ([]byte, error) {
  31. return utils.GenTemplate(RouterGenGo, templateData, params)
  32. }
  33. const RouterGenGo = `
  34. package routers
  35. import (
  36. "git.qianqiusoft.com/qianqiusoft/light-apiengine/engine"
  37. "git.qianqiusoft.com/qianqiusoft/light-apiengine/entitys"
  38. "github.com/gin-gonic/gin"
  39. "{{.app.ApplicationName}}/models"
  40. "sync"
  41. )
  42. var (
  43. _registerHandlers []func(e *engine.ApiEngine) = nil
  44. _registerHandlerMutex sync.Mutex
  45. _router map[string][]gin.HandlerFunc
  46. )
  47. func addRegisterHandler(handler func(e *engine.ApiEngine)){
  48. _registerHandlerMutex.Lock()
  49. defer _registerHandlerMutex.Unlock()
  50. if _registerHandlers == nil{
  51. _registerHandlers = make([]func(e *engine.ApiEngine), 0)
  52. }
  53. _registerHandlers = append(_registerHandlers, handler)
  54. }
  55. func UseMiddleware(name string, middle ...gin.HandlerFunc) {
  56. if _router == nil {
  57. _router = make(map[string][]gin.HandlerFunc)
  58. }
  59. _router[name] = append(_router[name], middle...)
  60. }
  61. func Register(e *engine.ApiEngine){
  62. e.AddAppMoudleInitFunc("{{.app.ApplicationName}}", DbInitFunc)
  63. _registerHandlerMutex.Lock()
  64. defer _registerHandlerMutex.Unlock()
  65. for i := range _registerHandlers{
  66. _registerHandlers[i](e)
  67. }
  68. }
  69. func DbInitFunc(domain string, e entitys.ApiEngineInterface) {
  70. if domain == ""{
  71. for _,db := range e.GetAllBusinessDb() {
  72. models.SyncDb(db)
  73. }
  74. }else {
  75. db := e.GetBusinessDb(domain)
  76. models.SyncDb(db)
  77. }
  78. }
  79. `