apiengine.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package engine
  2. import (
  3. "fmt"
  4. "github.com/gin-gonic/gin"
  5. "github.com/xormplus/xorm"
  6. "github.com/gin-contrib/cors"
  7. "git.qianqiusoft.com/qianqiusoft/light-apiengine/config"
  8. )
  9. type ApiEngine struct {
  10. OrmEngine *xorm.Engine
  11. GinEngine *gin.Engine
  12. listen_addr string
  13. }
  14. func Default() *ApiEngine{
  15. apiengine := NewApiEngine("mysql", config.AppConfig.DataSource, fmt.Sprintf(":%d",config.AppConfig.HttpPort))
  16. return apiengine
  17. }
  18. func NewApiEngine(driverName, dataSourceName string, addr string) *ApiEngine {
  19. engine := &ApiEngine{}
  20. var err error
  21. engine.OrmEngine, err = xorm.NewEngine(driverName, dataSourceName)
  22. if err!=nil{
  23. fmt.Println(err.Error())
  24. }
  25. initOrmEngine(engine.OrmEngine, driverName)
  26. engine.GinEngine = gin.Default()
  27. InitSystemDb(engine)
  28. //cross domain
  29. config := cors.DefaultConfig()
  30. config.AllowOrigins = []string{"http://localhost:8090"}
  31. config.AllowCredentials = true
  32. config.AllowHeaders = []string{"Content-Type,AccessToken,X-CSRF-Token, Authorization, Token"}
  33. engine.GinEngine.Use(cors.New(config))
  34. engine.listen_addr = addr
  35. return engine
  36. }
  37. func initOrmEngine(orm *xorm.Engine, driverName string) {
  38. sqldir := "./sqlconfig"
  39. //注册SqlMap配置,xml格式
  40. err := orm.RegisterSqlMap(xorm.Xml(sqldir, ".xml"))
  41. printError(err)
  42. //注册SqlTemplate配置,使用Pongo2模板引擎
  43. err = orm.RegisterSqlTemplate(xorm.Pongo2(sqldir, "_"+driverName+".stpl"))
  44. printError(err)
  45. //注册SqlTemplate配置,使用Jet模板引擎
  46. err = orm.RegisterSqlTemplate(xorm.Jet(sqldir, "_"+driverName+".jet"))
  47. printError(err)
  48. //注册SqlTemplate配置,使用html/template模板引擎
  49. err = orm.RegisterSqlTemplate(xorm.Default(sqldir, "_"+driverName+".tpl"))
  50. printError(err)
  51. orm.StartFSWatcher()
  52. orm.ShowSQL(true)
  53. /*for k,_:=range orm.SqlMap.Sql{
  54. fmt.Println(k)
  55. }*/
  56. //orm.ShowExecTime(true)
  57. }
  58. func printError(err error) {
  59. if err != nil {
  60. fmt.Println(err.Error())
  61. }
  62. }
  63. func (g *ApiEngine) SyncDb(beans ...interface{}) error {
  64. return g.OrmEngine.Sync2(beans)
  65. }
  66. func (g *ApiEngine) Run() {
  67. g.GinEngine.Run(g.listen_addr)
  68. }