package engine import ( "fmt" "github.com/gin-gonic/gin" "github.com/xormplus/xorm" "github.com/gin-contrib/cors" "git.qianqiusoft.com/qianqiusoft/light-apiengine/config" ) type ApiEngine struct { OrmEngine *xorm.Engine GinEngine *gin.Engine listen_addr string } func Default() *ApiEngine{ apiengine := NewApiEngine("mysql", config.AppConfig.DataSource, fmt.Sprintf(":%d",config.AppConfig.HttpPort)) return apiengine } func NewApiEngine(driverName, dataSourceName string, addr string) *ApiEngine { engine := &ApiEngine{} var err error engine.OrmEngine, err = xorm.NewEngine(driverName, dataSourceName) if err!=nil{ fmt.Println(err.Error()) } initOrmEngine(engine.OrmEngine, driverName) engine.GinEngine = gin.Default() InitSystemDb(engine) //cross domain config := cors.DefaultConfig() config.AllowOrigins = []string{"http://localhost:8090"} config.AllowCredentials = true config.AllowHeaders = []string{"Content-Type,AccessToken,X-CSRF-Token, Authorization, Token"} engine.GinEngine.Use(cors.New(config)) engine.listen_addr = addr return engine } func initOrmEngine(orm *xorm.Engine, driverName string) { sqldir := "./sqlconfig" //注册SqlMap配置,xml格式 err := orm.RegisterSqlMap(xorm.Xml(sqldir, ".xml")) printError(err) //注册SqlTemplate配置,使用Pongo2模板引擎 err = orm.RegisterSqlTemplate(xorm.Pongo2(sqldir, "_"+driverName+".stpl")) printError(err) //注册SqlTemplate配置,使用Jet模板引擎 err = orm.RegisterSqlTemplate(xorm.Jet(sqldir, "_"+driverName+".jet")) printError(err) //注册SqlTemplate配置,使用html/template模板引擎 err = orm.RegisterSqlTemplate(xorm.Default(sqldir, "_"+driverName+".tpl")) printError(err) orm.StartFSWatcher() orm.ShowSQL(true) /*for k,_:=range orm.SqlMap.Sql{ fmt.Println(k) }*/ //orm.ShowExecTime(true) } 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) }