diff --git a/models/init.go b/models/init.go index 9153f01..508b80b 100644 --- a/models/init.go +++ b/models/init.go @@ -2,11 +2,12 @@ package model import ( "fmt" + "time" + "github.com/HFO4/cloudreve/pkg/conf" "github.com/HFO4/cloudreve/pkg/util" "github.com/gin-gonic/gin" "github.com/jinzhu/gorm" - "time" _ "github.com/jinzhu/gorm/dialects/mysql" _ "github.com/jinzhu/gorm/dialects/sqlite" @@ -28,16 +29,22 @@ func Init() { // 测试模式下,使用内存数据库 db, err = gorm.Open("sqlite3", ":memory:") } else { - if conf.DatabaseConfig.Type == "UNSET" { - // 未指定数据库时,使用SQLite + switch conf.DatabaseConfig.Type { + case "UNSET", "sqlite", "sqlite3": + // 未指定数据库或者明确指定为 sqlite 时,使用 SQLite3 数据库 db, err = gorm.Open("sqlite3", util.RelativePath(conf.DatabaseConfig.DBFile)) - } else { - db, err = gorm.Open(conf.DatabaseConfig.Type, fmt.Sprintf("%s:%s@(%s:%d)/%s?charset=utf8&parseTime=True&loc=Local", + case "mysql": + // 当前只支持 sqlite3 与 mysql 数据库 + // TODO: import 其他 gorm 支持的主流数据库?否则直接 Open 没有任何意义。 + // TODO: 数据库连接其他参数允许用户自定义?譬如编码更换为 utf8mb4 以支持表情。 + db, err = gorm.Open("mysql", fmt.Sprintf("%s:%s@(%s:%d)/%s?charset=utf8&parseTime=True&loc=Local", conf.DatabaseConfig.User, conf.DatabaseConfig.Password, conf.DatabaseConfig.Host, conf.DatabaseConfig.Port, conf.DatabaseConfig.Name)) + default: + util.Log().Panic("不支持数据库类型: %s", conf.DatabaseConfig.Type) } }