package mysql import ( "time" "git.links123.net/links123.com/skeleton/config" "git.links123.net/links123.com/skeleton/service/api" "github.com/sirupsen/logrus" "upper.io/db.v3/lib/sqlbuilder" "upper.io/db.v3/mysql" ) var ( session sqlbuilder.Database ) // Init 初始化数据库 func Init() { dbConfig := config.C.DB settings := mysql.ConnectionURL{ Host: dbConfig.Host, Database: dbConfig.Name, User: dbConfig.User, Password: dbConfig.Password, } var err error if session, err = mysql.Open(settings); err != nil { logrus.WithField("dsn", settings.String()).Info("connect db failed") panic(err) } logrus.WithField("dsn", settings.String()).Info("connect db success") session.SetMaxIdleConns(dbConfig.MaxIdleConnections) session.SetMaxOpenConns(dbConfig.MaxOpenConnections) for { if err := session.Ping(); err != nil { logrus.Warn("waiting for mysql server start...") time.Sleep(3 * time.Second) continue } logrus.Info("connect to mysql successful") break } if config.C.App.Debug { session.SetLogging(true) } } // Close 在程序退出时关闭连接 func Close() { if session != nil { err := session.Close() if err != nil { logrus.Errorf("error close mysql connection: %s", err.Error()) return } } logrus.Info("mysql connection close") } func paging(selector sqlbuilder.Selector, cp api.CommonParams) sqlbuilder.Paginator { return selector.Paginate(uint(cp.Limit)).Page(uint(cp.Page)) }