From cec1019a72bd6b9ff301e464d460e7bbde238264 Mon Sep 17 00:00:00 2001 From: Gzx1999 Date: Mon, 10 Apr 2023 23:27:26 +0800 Subject: [PATCH] add mysql database --- gala-ops/server/config.yml.templete | 6 ++++ gala-ops/server/config/config.go | 9 ++++++ gala-ops/server/database/mysql.go | 45 +++++++++++++++++++++++++++++ gala-ops/server/main.go | 10 +++++-- 4 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 gala-ops/server/database/mysql.go diff --git a/gala-ops/server/config.yml.templete b/gala-ops/server/config.yml.templete index 1f329c53..a3b17429 100644 --- a/gala-ops/server/config.yml.templete +++ b/gala-ops/server/config.yml.templete @@ -6,3 +6,9 @@ http: addr: "0.0.0.0:7888" PilotGo: addr: "localhost:8889" +mysql: + host: localhost + port: 3306 + user: '' + password: '' + database: PluginGalaOps \ No newline at end of file diff --git a/gala-ops/server/config/config.go b/gala-ops/server/config/config.go index 380a48e2..bbe0838e 100644 --- a/gala-ops/server/config/config.go +++ b/gala-ops/server/config/config.go @@ -22,10 +22,19 @@ type PilotGoConf struct { Addr string `yaml:"addr"` } +type MysqlConf struct { + Host string `yaml:"host"` + Port int `yaml:"port"` + User string `yaml:"user"` + Password string `yaml:"password"` + Database string `yaml:"database"` +} + type ServerConfig struct { Grafana *GrafanaConf `yaml:"grafana"` Http *HttpConf `yaml:"http"` PilotGo *PilotGoConf `yaml:"PilotGo"` + Mysql *MysqlConf `yaml:"mysql"` } const config_file = "./config.yml" diff --git a/gala-ops/server/database/mysql.go b/gala-ops/server/database/mysql.go new file mode 100644 index 00000000..7b4f256b --- /dev/null +++ b/gala-ops/server/database/mysql.go @@ -0,0 +1,45 @@ +package database + +import ( + "fmt" + + "gorm.io/driver/mysql" + "gorm.io/gorm" + "gorm.io/gorm/schema" + "openeuler.org/PilotGo/gala-ops-plugin/config" +) + +var globalDB *gorm.DB + +func MysqlInit(conf *config.MysqlConf) error { + url := fmt.Sprintf("%s:%s@(%s:%d)/%s?charset=utf8mb4&parseTime=true", + conf.User, + conf.Password, + conf.Host, + conf.Port, + conf.Database) + + gdb, err := gorm.Open(mysql.Open(url), &gorm.Config{ + NamingStrategy: schema.NamingStrategy{ + SingularTable: true, + }, + }) + if err != nil { + return err + } + globalDB = gdb + + db, err := gdb.DB() + if err != nil { + return err + } + + db.SetMaxIdleConns(10) + db.SetMaxOpenConns(100) + + return nil +} + +func DB() *gorm.DB { + return globalDB +} diff --git a/gala-ops/server/main.go b/gala-ops/server/main.go index 59ebc6d6..8e27f588 100644 --- a/gala-ops/server/main.go +++ b/gala-ops/server/main.go @@ -2,13 +2,14 @@ package main import ( "fmt" + "os" "github.com/gin-gonic/gin" - "openeuler.org/PilotGo/gala-ops-plugin/httphandler" - "openeuler.org/PilotGo/gala-ops-plugin/client" "openeuler.org/PilotGo/gala-ops-plugin/config" + "openeuler.org/PilotGo/gala-ops-plugin/database" + "openeuler.org/PilotGo/gala-ops-plugin/httphandler" ) func main() { @@ -16,6 +17,11 @@ func main() { config.Init() + if err := database.MysqlInit(config.Config().Mysql); err != nil { + fmt.Println("failed to initialize database") + os.Exit(-1) + } + engine := client.Client().HttpEngine registerHandlers(engine) client.StartClient(config.Config().Http) -- Gitee