You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
779 B
43 lines
779 B
package database
|
|
|
|
import (
|
|
"database/sql"
|
|
"github.com/go-kratos/kratos/v2/log"
|
|
_ "github.com/go-sql-driver/mysql"
|
|
)
|
|
|
|
var db *sql.DB
|
|
|
|
type DatabaseConfig struct {
|
|
Driver string `yaml:"driver"`
|
|
DataSourceName string `yaml:"dataSourceName"`
|
|
}
|
|
|
|
type Config struct {
|
|
Database DatabaseConfig `yaml:"database"`
|
|
}
|
|
|
|
func InitDB(config *DatabaseConfig) {
|
|
var err error
|
|
switch config.Driver {
|
|
case "mysql":
|
|
db, err = sql.Open("mysql", config.DataSourceName)
|
|
default:
|
|
log.Errorf("Unsupported database driver: %s", config.Driver)
|
|
}
|
|
|
|
if err != nil {
|
|
log.Errorf("Failed to connect to database: %v", err)
|
|
}
|
|
|
|
err = db.Ping()
|
|
if err != nil {
|
|
log.Fatalf("Failed to ping database: %v", err)
|
|
}
|
|
log.Info("Connected to database")
|
|
}
|
|
|
|
func GetDB() *sql.DB {
|
|
return db
|
|
}
|