From 9d7a5b45984bb3fee187146b0f27e77d6ec0ea0a Mon Sep 17 00:00:00 2001 From: tardc Date: Thu, 23 Dec 2021 01:34:53 +0800 Subject: [PATCH] feat(database): add mysql support (#39) --- internal/database/db.go | 3 +++ internal/database/mysql.go | 14 ++++++++++++++ pkg/server/server.go | 11 ++++++++++- 3 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 internal/database/mysql.go diff --git a/internal/database/db.go b/internal/database/db.go index cf26343..daf6a92 100644 --- a/internal/database/db.go +++ b/internal/database/db.go @@ -10,12 +10,15 @@ var ( type DriverType = string const Sqlite = "sqlite" +const Mysql = "mysql" func InitDB(driver DriverType, dsn string) (err error) { Driver = driver switch driver { case Sqlite: DB, err = NewSqlite3(dsn) + case Mysql: + DB, err = NewMysql(dsn) } return err } diff --git a/internal/database/mysql.go b/internal/database/mysql.go new file mode 100644 index 0000000..e4ec04d --- /dev/null +++ b/internal/database/mysql.go @@ -0,0 +1,14 @@ +package database + +import ( + "gorm.io/driver/mysql" + "gorm.io/gorm" +) + +func NewMysql(dsn string) (*gorm.DB, error) { + db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}) + if err != nil { + return nil, err + } + return db, nil +} diff --git a/pkg/server/server.go b/pkg/server/server.go index c9de245..62da260 100644 --- a/pkg/server/server.go +++ b/pkg/server/server.go @@ -1,6 +1,8 @@ package server import ( + "github.com/pkg/errors" + "strings" "sync" "github.com/gin-gonic/gin" @@ -60,7 +62,14 @@ func initDatabase(dsn string) { Level: log.LevelInfo, }) - err := database.InitDB(database.Sqlite, dsn) + var err error + if strings.Contains(dsn, "@tcp") { + err = database.InitDB(database.Mysql, dsn) + } else if strings.Contains(dsn, ".db") { + err = database.InitDB(database.Sqlite, dsn) + } else { + err = errors.New("unsupported database") + } if err != nil { log.Fatal(err.Error()) }