| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- package engine
- import (
- "fmt"
- //"github.com/gin-contrib/sessions"
- //"github.com/gin-contrib/sessions/memstore"
- //"github.com/gin-contrib/sessions/cookie"
- "os"
- "git.qianqiusoft.com/qianqiusoft/light-apiengine/config"
- "git.qianqiusoft.com/qianqiusoft/light-apiengine/utils"
- "github.com/gin-contrib/cors"
- "github.com/gin-gonic/gin"
- "github.com/xormplus/xorm"
- )
- 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()
- //启动session
- //store := sessions.NewCookieStore([]byte("secret"))
- //engine.GinEngine.Use(sessions.Sessions("session", store))
- _, err = os.Stat("doc/api.tpl")
- if err == nil {
- fmt.Println("LoadHTMLGlob.")
- engine.GinEngine.LoadHTMLGlob("doc/*")
- }
- CreateDatabase(engine)
- //cross domain
- config := cors.DefaultConfig()
- config.AllowAllOrigins = true
- //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) {
- path,_:=utils.GetCurrentPath()
- sqldir := path + "/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() {
- InitDbData(g)
- g.GinEngine.StaticFile("/", "web/index.html")
- g.GinEngine.Static("/static", "web/static")
- g.GinEngine.Run(g.listen_addr)
- }
|