apiengine.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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. engine.OrmEngine, _ = xorm.NewEngine(driverName, dataSourceName)
  15. initOrmEngine(engine.OrmEngine, driverName)
  16. engine.GinEngine = gin.Default()
  17. engine.listen_addr = addr
  18. return engine
  19. }
  20. func initOrmEngine(orm *xorm.Engine, driverName string) {
  21. sqldir := "./sql/" + driverName
  22. //注册SqlMap配置,xml格式
  23. err := orm.RegisterSqlMap(xorm.Xml(sqldir, ".xml"))
  24. printError(err)
  25. //注册SqlTemplate配置,使用Pongo2模板引擎
  26. err = orm.RegisterSqlTemplate(xorm.Pongo2(sqldir, ".stpl"))
  27. printError(err)
  28. //注册SqlTemplate配置,使用Jet模板引擎
  29. err = orm.RegisterSqlTemplate(xorm.Jet(sqldir, ".jet"))
  30. printError(err)
  31. //注册SqlTemplate配置,使用html/template模板引擎
  32. err = orm.RegisterSqlTemplate(xorm.Default(sqldir, ".tpl"))
  33. printError(err)
  34. }
  35. func printError(err error) {
  36. if err != nil {
  37. fmt.Println(err.Error())
  38. }
  39. }
  40. func (g *ApiEngine) SyncDb(beans ...interface{}) error {
  41. return g.OrmEngine.Sync2(beans)
  42. }
  43. func (g *ApiEngine) Run() {
  44. g.GinEngine.Run(g.listen_addr)
  45. }