apiengine.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package engine
  2. import (
  3. "fmt"
  4. "github.com/gin-gonic/gin"
  5. "github.com/xormplus/xorm"
  6. )
  7. type ApiEngine struct {
  8. OrmEngine *xorm.Engine
  9. GinEngine *gin.Engine
  10. listen_addr string
  11. }
  12. func NewApiEngine(driverName, dataSourceName string, addr string) *ApiEngine {
  13. engine := &ApiEngine{}
  14. var err error
  15. engine.OrmEngine, err = xorm.NewEngine(driverName, dataSourceName)
  16. if err!=nil{
  17. fmt.Println(err.Error())
  18. }
  19. initOrmEngine(engine.OrmEngine, driverName)
  20. engine.GinEngine = gin.Default()
  21. engine.listen_addr = addr
  22. return engine
  23. }
  24. func initOrmEngine(orm *xorm.Engine, driverName string) {
  25. sqldir := "./sqlconfig"
  26. //注册SqlMap配置,xml格式
  27. err := orm.RegisterSqlMap(xorm.Xml(sqldir, ".xml"))
  28. printError(err)
  29. //注册SqlTemplate配置,使用Pongo2模板引擎
  30. err = orm.RegisterSqlTemplate(xorm.Pongo2(sqldir, "_"+driverName+".stpl"))
  31. printError(err)
  32. //注册SqlTemplate配置,使用Jet模板引擎
  33. err = orm.RegisterSqlTemplate(xorm.Jet(sqldir, "_"+driverName+".jet"))
  34. printError(err)
  35. //注册SqlTemplate配置,使用html/template模板引擎
  36. err = orm.RegisterSqlTemplate(xorm.Default(sqldir, "_"+driverName+".tpl"))
  37. printError(err)
  38. orm.StartFSWatcher()
  39. orm.ShowSQL(true)
  40. /*for k,_:=range orm.SqlMap.Sql{
  41. fmt.Println(k)
  42. }*/
  43. //orm.ShowExecTime(true)
  44. }
  45. func printError(err error) {
  46. if err != nil {
  47. fmt.Println(err.Error())
  48. }
  49. }
  50. func (g *ApiEngine) SyncDb(beans ...interface{}) error {
  51. return g.OrmEngine.Sync2(beans)
  52. }
  53. func (g *ApiEngine) Run() {
  54. g.GinEngine.Run(g.listen_addr)
  55. }