|
|
@@ -0,0 +1,55 @@
|
|
|
+package engine
|
|
|
+
|
|
|
+import (
|
|
|
+ "fmt"
|
|
|
+
|
|
|
+ "github.com/gin-gonic/gin"
|
|
|
+ "github.com/xormplus/xorm"
|
|
|
+)
|
|
|
+
|
|
|
+type ApiEngine struct {
|
|
|
+ OrmEngine *xorm.Engine
|
|
|
+ GinEngine *gin.Engine
|
|
|
+ listen_addr string
|
|
|
+}
|
|
|
+
|
|
|
+func NewApiEngine(driverName, dataSourceName string, addr string) *ApiEngine {
|
|
|
+
|
|
|
+ engine := &ApiEngine{}
|
|
|
+
|
|
|
+ engine.OrmEngine, _ = xorm.NewEngine(driverName, dataSourceName)
|
|
|
+ initOrmEngine(engine.OrmEngine, driverName)
|
|
|
+ engine.GinEngine = gin.Default()
|
|
|
+ engine.listen_addr = addr
|
|
|
+ return engine
|
|
|
+}
|
|
|
+
|
|
|
+func initOrmEngine(orm *xorm.Engine, driverName string) {
|
|
|
+ sqldir := "./sql/" + driverName
|
|
|
+ //注册SqlMap配置,xml格式
|
|
|
+ err := orm.RegisterSqlMap(xorm.Xml(sqldir, ".xml"))
|
|
|
+ printError(err)
|
|
|
+ //注册SqlTemplate配置,使用Pongo2模板引擎
|
|
|
+ err = orm.RegisterSqlTemplate(xorm.Pongo2(sqldir, ".stpl"))
|
|
|
+ printError(err)
|
|
|
+ //注册SqlTemplate配置,使用Jet模板引擎
|
|
|
+ err = orm.RegisterSqlTemplate(xorm.Jet(sqldir, ".jet"))
|
|
|
+ printError(err)
|
|
|
+ //注册SqlTemplate配置,使用html/template模板引擎
|
|
|
+ err = orm.RegisterSqlTemplate(xorm.Default(sqldir, ".tpl"))
|
|
|
+ printError(err)
|
|
|
+}
|
|
|
+
|
|
|
+func printError(err error) {
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println(err.Error())
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func (g *ApiEngine) SyncDb(beans ...interface{}) error {
|
|
|
+ return g.OrmEngine.Sync2(beans)
|
|
|
+}
|
|
|
+
|
|
|
+func (g *ApiEngine) Run() {
|
|
|
+ g.GinEngine.Run(g.listen_addr)
|
|
|
+}
|