Skip to content

Commit

Permalink
feat: 废弃dsn链接方式
Browse files Browse the repository at this point in the history
  • Loading branch information
rehiy committed Apr 2, 2023
1 parent cbf0a94 commit 5f0d96e
Show file tree
Hide file tree
Showing 9 changed files with 67 additions and 98 deletions.
1 change: 0 additions & 1 deletion cmd/args/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ var Logger struct {
}

var Server struct {
DSN string
Listen string
JwtKey string
}
Expand Down
6 changes: 4 additions & 2 deletions cmd/args/setter.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ func init() {
viper.SetDefault("logger.stdout", true)
viper.SetDefault("logger.tofile", false)

viper.SetDefault("server.type", "sqlite")
viper.SetDefault("server.name", "server.db")

viper.SetDefault("server.jwtkey", strutil.Rand(32))

}
Expand All @@ -29,7 +32,7 @@ func Load() {
Dataset.Dir = viper.GetString("dataset.dir")
Dataset.Secret = viper.GetString("dataset.secret")

Database.Type = viper.GetString("database.dir")
Database.Type = viper.GetString("database.type")
Database.Host = viper.GetString("database.host")
Database.User = viper.GetString("database.user")
Database.Passwd = viper.GetString("database.passwd")
Expand All @@ -41,7 +44,6 @@ func Load() {
Logger.Stdout = viper.GetBool("logger.stdout")
Logger.ToFile = viper.GetBool("logger.tofile")

Server.DSN = viper.GetString("server.dsn")
Server.Listen = viper.GetString("server.listen")
Server.JwtKey = viper.GetString("server.jwtkey")

Expand Down
3 changes: 0 additions & 3 deletions cmd/subset/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,9 @@ func WithServer() *cobra.Command {
serverCmd.Flags().MarkHidden("help")

serverCmd.Flags().StringVarP(&serverAct, "service", "s", "", "管理系统服务")

serverCmd.Flags().StringP("listen", "l", ":7800", "服务端监听的IP地址和端口")
serverCmd.Flags().StringP("dsn", "d", "server.db", "数据源名称,支持MySQL和SQLite")

viper.BindPFlag("server.listen", serverCmd.Flags().Lookup("listen"))
viper.BindPFlag("server.dsn", serverCmd.Flags().Lookup("dsn"))

return serverCmd

Expand Down
1 change: 0 additions & 1 deletion cmd/subset/worker.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ func WithWorker() *cobra.Command {
workerCmd.Flags().MarkHidden("help")

workerCmd.Flags().StringVarP(&workerAct, "service", "s", "", "管理系统服务")

workerCmd.Flags().StringP("remote", "r", "", "注册地址 (e.g. ws://{domain}/wsi/{appid}/worker)")

viper.BindPFlag("worker.remote", workerCmd.Flags().Lookup("remote"))
Expand Down
1 change: 0 additions & 1 deletion docker/tdp-server
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ logger:
dir: /var/log/tdp-cloud
level: info
server:
dsn: server.db
listen: :7800
EOF

Expand Down
1 change: 0 additions & 1 deletion docs/server-service
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,6 @@ logger:
dir: /var/log/tdp-cloud
level: info
server:
dsn: server.db
listen: :7800
EOF

Expand Down
14 changes: 8 additions & 6 deletions docs/配置文件解析.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@
## 数据存储
dataset:
dir: /var/lib/tdp-cloud
secret: xxxxxxxxxxxxxxxxxxxxxxxxxxx

## 数据库参数,覆盖`server.dsn`配置
## 数据库参数
database:
type: sqlite
name: server.db
Expand All @@ -29,7 +30,7 @@ logger:
## 服务端参数
server:
listen: 127.0.0.1:7800
dsn: server.db ## 未设置`database`时启用,用于兼容无配置文件模式
jwtkey: xxxxxxxxxxxxxxxxxxxxxxxxxxx
```
## 子节点
Expand All @@ -38,6 +39,7 @@ server:
## 数据存储
dataset:
dir: /var/lib/tdp-cloud
secret: xxxxxxxxxxxxxxxxxxxxxxxxxxx

## 日志参数
logger:
Expand All @@ -51,10 +53,10 @@ worker:
remote: "ws://xxxxxxx"
```
## 数据库配置说明( `database.*` 和 `--dsn`)
## 数据库配置说明(`database.*`)

- 使用 **SQLite** 数据源 `server.db`。默认会追加参数 `?_pragma=busy_timeout=5000&_pragma=journa_mode(WAL)`
- 使用 **SQLite** 默认会追加参数 `?_pragma=busy_timeout=5000&_pragma=journa_mode(WAL)`

- 使用 **MySQL** 数据源 `user:password@tcp(localhost:3306)/dbname`。默认会追加参数 `?charset=utf8mb4&parseTime=True&loc=Local`
- 使用 **MySQL** 默认会追加参数 `?charset=utf8mb4&parseTime=True&loc=Local`

**注意:** 如果 `dsn` 字符串任意位置含有 `?` ,将忽略所有追加参数
**注意:** 如果 `database.option` 不为空将忽略默认追加参数,使用用户定义的参数
83 changes: 0 additions & 83 deletions module/dborm/config.go

This file was deleted.

55 changes: 55 additions & 0 deletions module/dborm/dialector.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package dborm

import (
"github.com/glebarez/sqlite"
"gorm.io/driver/mysql"
"gorm.io/gorm"

"tdp-cloud/cmd/args"
"tdp-cloud/helper/logman"
)

func dialector() gorm.Dialector {

switch args.Database.Type {
case "sqlite":
return useSqlite()
case "mysql":
return useMysql()
default:
logman.Fatal("Database Type error:", args.Database.Type)
}

return nil

}

func useSqlite() gorm.Dialector {

dir := args.Dataset.Dir
name := args.Database.Name

option := args.Database.Option
if option == "" {
option = "?_pragma=busy_timeout=5000&_pragma=journa_mode(WAL)"
}

return sqlite.Open(dir + "/" + name + option)

}

func useMysql() gorm.Dialector {

host := args.Database.Host
user := args.Database.User
passwd := args.Database.Passwd
name := args.Database.Name

option := args.Database.Option
if option == "" {
option = "?charset=utf8mb4&parseTime=True&loc=Local"
}

return mysql.Open(user + ":" + passwd + "@tcp(" + host + ")/" + name + option)

}

0 comments on commit 5f0d96e

Please sign in to comment.