feat: add tidb support and tls suppport

This commit is contained in:
engigu
2025-04-28 18:06:41 +08:00
parent 1dd5df581e
commit 21d21481a7
5 changed files with 32 additions and 7 deletions
+6 -1
View File
@@ -24,8 +24,12 @@ Message Nest 是一个灵活而强大的消息推送整合平台,旨在简化
## 功能更新日志
- **2025.04.28**
- 支持tidb作为存储,支持数据库ssl配置
- docker运行指定环境变量SSL=true
- ini配置文件运行指定环境变量Ssl=true
- **2025.01.01**
- 支持自托管消息,现在可以将站点作为消息的接受,登录站点查看消息
- 支持自托管消息,现在可以将站点作为消息的接受,登录站点查看消息
- **2024.04.29**
- 支持 SQLite 部署
- 支持MySQL 5.x 8.x
@@ -330,6 +334,7 @@ docker-compose up -d
| MYSQL_PASSWORD | mysql数据库密码,DB_TYPE=mysql必填 |
| MYSQL_DB | mysql数据库名字,DB_TYPE=mysql必填 |
| MYSQL_TABLE_PREFIX | mysql数据表前缀,DB_TYPE=mysql必填 |
| SSL | 是否开启SSL |
| | |
| SQL_DEBUG | 是否打印SQL,可选,默认关,设置enable为开启 |
+4
View File
@@ -23,4 +23,8 @@ Host = 123.1.1.1
Name = db_name
Port = 3306
TablePrefix = message_
; ssl enable, value: [false | true]
Ssl = true
; SqlDebug = enable
+20 -6
View File
@@ -34,12 +34,6 @@ type UUIDModel struct {
// Setup initializes the database instance
func Setup() *gorm.DB {
var err error
connStr := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local",
setting.DatabaseSetting.User,
setting.DatabaseSetting.Password,
setting.DatabaseSetting.Host,
setting.DatabaseSetting.Port,
setting.DatabaseSetting.Name)
config := &gorm.Config{
NamingStrategy: schema.NamingStrategy{
@@ -50,6 +44,26 @@ func Setup() *gorm.DB {
switch setting.DatabaseSetting.Type {
case "mysql":
connStr := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local",
setting.DatabaseSetting.User,
setting.DatabaseSetting.Password,
setting.DatabaseSetting.Host,
setting.DatabaseSetting.Port,
setting.DatabaseSetting.Name)
if setting.DatabaseSetting.Ssl != "false" {
connStr += fmt.Sprintf("&tls=%s", setting.DatabaseSetting.Ssl)
}
db, err = gorm.Open(mysql.Open(connStr), config)
case "tidb":
connStr := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4",
setting.DatabaseSetting.User,
setting.DatabaseSetting.Password,
setting.DatabaseSetting.Host,
setting.DatabaseSetting.Port,
setting.DatabaseSetting.Name)
if setting.DatabaseSetting.Ssl != "false" {
connStr += fmt.Sprintf("&tls=%s", setting.DatabaseSetting.Ssl)
}
db, err = gorm.Open(mysql.Open(connStr), config)
case "sqlite":
db, err = gorm.Open(sqlite.Open("conf/database.db"), config)
+1
View File
@@ -50,6 +50,7 @@ func loadConfigFromEnv() {
ServerSetting.WriteTimeout = 60
DatabaseSetting.Type = getOptionEnvValue("DB_TYPE", "sqlite")
DatabaseSetting.Ssl = getOptionEnvValue("SSL", "false")
if DatabaseSetting.Type == "mysql" {
DatabaseSetting.Host = getMustEnvValue("MYSQL_HOST")
+1
View File
@@ -38,6 +38,7 @@ type Database struct {
Name string
TablePrefix string
SqlDebug string
Ssl string
}
var DatabaseSetting = &Database{}