From 0db5708589d7e9f9747efcd73276f867438d68db Mon Sep 17 00:00:00 2001 From: wubijie Date: Mon, 26 Jun 2023 11:40:59 +0800 Subject: [PATCH] Add mysql database linking and initialization --- redis/server/db/db.go | 60 +++++++++++++++++++++++++++++++++++++++++++ redis/server/main.go | 6 +++++ 2 files changed, 66 insertions(+) create mode 100644 redis/server/db/db.go diff --git a/redis/server/db/db.go b/redis/server/db/db.go new file mode 100644 index 00000000..a83426c6 --- /dev/null +++ b/redis/server/db/db.go @@ -0,0 +1,60 @@ +package db + +import ( + "database/sql" + "fmt" + + "gorm.io/driver/mysql" + "gorm.io/gorm" + "gorm.io/gorm/schema" + "openeuler.org/PilotGo/redis-plugin/config" + "openeuler.org/PilotGo/redis-plugin/global" +) + +var Url string + +type MysqlManager struct { + ip string + port int + username string + password string + dbname string + db *gorm.DB +} + +func MysqldbInit(conf *config.MysqlDBInfo) error { + m := &MysqlManager{ + ip: conf.HostName, + port: conf.Port, + username: conf.UserName, + password: conf.Password, + dbname: conf.DataBase, + } + Url = fmt.Sprint("%s:%s@(%s:%d)/%s?charset=utf8mb4&parseTime=true", + m.username, + m.password, + m.ip, + m.port, + m.dbname) + var err error + m.db, err = gorm.Open(mysql.Open(Url), &gorm.Config{ + NamingStrategy: schema.NamingStrategy{ + SingularTable: true, + }, + }) + if err != nil { + return err + } + global.GlobalDB = m.db + + var db *sql.DB + if db, err = m.db.DB(); err != nil { + return err + } + + db.SetMaxIdleConns(10) + db.SetMaxOpenConns(100) + + global.GlobalDB.AutoMigrate() + return nil +} diff --git a/redis/server/main.go b/redis/server/main.go index 2eb76c67..796521c2 100644 --- a/redis/server/main.go +++ b/redis/server/main.go @@ -7,6 +7,7 @@ import ( "gitee.com/openeuler/PilotGo-plugins/sdk/logger" "gitee.com/openeuler/PilotGo-plugins/sdk/plugin/client" "openeuler.org/PilotGo/redis-plugin/config" + "openeuler.org/PilotGo/redis-plugin/db" "openeuler.org/PilotGo/redis-plugin/global" "openeuler.org/PilotGo/redis-plugin/plugin" "openeuler.org/PilotGo/redis-plugin/router" @@ -32,6 +33,11 @@ func main() { router.RegisterAPIs(server) global.GlobalClient.Server = config.Config().Http.Addr + if err := db.MysqldbInit(config.Config().Mysql); err != nil { + logger.Error("mysql db init failed, please check again: %s", err) + os.Exit(-1) + } + if err := server.Run(config.Config().Http.Addr); err != nil { logger.Fatal("failed to run server") } -- Gitee