Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
FLIPPED-AURORA
gin-vue-admin
提交
e3df65f3
G
gin-vue-admin
项目概览
FLIPPED-AURORA
/
gin-vue-admin
大约 1 年 前同步成功
通知
342
Star
18155
Fork
5506
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
gin-vue-admin
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e3df65f3
编写于
12月 07, 2021
作者:
S
songzhibin97
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: issues #809
上级
2aed46bb
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
132 addition
and
2 deletion
+132
-2
server/config.yaml
server/config.yaml
+20
-0
server/config/config.go
server/config/config.go
+3
-2
server/config/db_list.go
server/config/db_list.go
+21
-0
server/global/global.go
server/global/global.go
+22
-0
server/initialize/db_list.go
server/initialize/db_list.go
+24
-0
server/initialize/gorm_mysql.go
server/initialize/gorm_mysql.go
+21
-0
server/initialize/gorm_pgsql.go
server/initialize/gorm_pgsql.go
+20
-0
server/main.go
server/main.go
+1
-0
未找到文件。
server/config.yaml
浏览文件 @
e3df65f3
...
...
@@ -83,6 +83,26 @@ pgsql:
log-mode
:
"
"
log-zap
:
false
db-list
:
[
{
disabled
:
true
,
# 是否启用
type
:
"
"
,
# 数据库的类型,目前支持mysql、pgsql
alias-name
:
"
"
,
# 数据库的名称,注意: alias-name 需要在db-list中唯一
path
:
'
'
,
port
:
'
'
,
config
:
'
'
,
db-name
:
'
'
,
username
:
'
'
,
password
:
'
'
,
max-idle-conns
:
10
,
max-open-conns
:
100
,
log-mode
:
"
"
,
log-zap
:
false
,
}
]
# local configuration
local
:
path
:
'
uploads/file'
...
...
server/config/config.go
浏览文件 @
e3df65f3
...
...
@@ -11,8 +11,9 @@ type Server struct {
// auto
AutoCode
Autocode
`mapstructure:"autoCode" json:"autoCode" yaml:"autoCode"`
// gorm
Mysql
Mysql
`mapstructure:"mysql" json:"mysql" yaml:"mysql"`
Pgsql
Pgsql
`mapstructure:"pgsql" json:"pgsql" yaml:"pgsql"`
Mysql
Mysql
`mapstructure:"mysql" json:"mysql" yaml:"mysql"`
Pgsql
Pgsql
`mapstructure:"pgsql" json:"pgsql" yaml:"pgsql"`
DBList
[]
DB
`mapstructure:"db-list" json:"db-list" yaml:"db-list"`
// oss
Local
Local
`mapstructure:"local" json:"local" yaml:"local"`
Qiniu
Qiniu
`mapstructure:"qiniu" json:"qiniu" yaml:"qiniu"`
...
...
server/config/db_list.go
0 → 100644
浏览文件 @
e3df65f3
package
config
type
DB
struct
{
Disable
bool
`mapstructure:"disable" json:"disable" yaml:"disable"`
Type
string
`mapstructure:"type" json:"type" yaml:"type"`
AliasName
string
`mapstructure:"alias-name" json:"alias-name" yaml:"alias-name"`
Path
string
`mapstructure:"path" json:"path" yaml:"path"`
// 服务器地址:端口
Port
string
`mapstructure:"port" json:"port" yaml:"port"`
//:端口
Config
string
`mapstructure:"config" json:"config" yaml:"config"`
// 高级配置
Dbname
string
`mapstructure:"db-name" json:"dbname" yaml:"db-name"`
// 数据库名
Username
string
`mapstructure:"username" json:"username" yaml:"username"`
// 数据库用户名
Password
string
`mapstructure:"password" json:"password" yaml:"password"`
// 数据库密码
MaxIdleConns
int
`mapstructure:"max-idle-conns" json:"maxIdleConns" yaml:"max-idle-conns"`
// 空闲中的最大连接数
MaxOpenConns
int
`mapstructure:"max-open-conns" json:"maxOpenConns" yaml:"max-open-conns"`
// 打开到数据库的最大连接数
LogMode
string
`mapstructure:"log-mode" json:"logMode" yaml:"log-mode"`
// 是否开启Gorm全局日志
LogZap
bool
`mapstructure:"log-zap" json:"logZap" yaml:"log-zap"`
}
func
(
m
*
DB
)
Dsn
()
string
{
return
m
.
Username
+
":"
+
m
.
Password
+
"@tcp("
+
m
.
Path
+
":"
+
m
.
Port
+
")/"
+
m
.
Dbname
+
"?"
+
m
.
Config
}
server/global/global.go
浏览文件 @
e3df65f3
package
global
import
(
"sync"
"github.com/flipped-aurora/gin-vue-admin/server/utils/timer"
"github.com/songzhibin97/gkit/cache/local_cache"
...
...
@@ -17,6 +19,7 @@ import (
var
(
GVA_DB
*
gorm
.
DB
GVA_DBList
map
[
string
]
*
gorm
.
DB
GVA_REDIS
*
redis
.
Client
GVA_CONFIG
config
.
Server
GVA_VP
*
viper
.
Viper
...
...
@@ -26,4 +29,23 @@ var (
GVA_Concurrency_Control
=
&
singleflight
.
Group
{}
BlackCache
local_cache
.
Cache
lock
sync
.
RWMutex
)
// GetGlobalDBByDBName 通过名称获取db list中的db
func
GetGlobalDBByDBName
(
dbname
string
)
*
gorm
.
DB
{
lock
.
RLock
()
defer
lock
.
RUnlock
()
return
GVA_DBList
[
dbname
]
}
// MustGetGlobalDBByDBName 通过名称获取db 如果不存在则panic
func
MustGetGlobalDBByDBName
(
dbname
string
)
*
gorm
.
DB
{
lock
.
RLock
()
defer
lock
.
RUnlock
()
db
,
ok
:=
GVA_DBList
[
dbname
]
if
!
ok
||
db
==
nil
{
panic
(
"db no init"
)
}
return
db
}
server/initialize/db_list.go
0 → 100644
浏览文件 @
e3df65f3
package
initialize
import
(
"github.com/flipped-aurora/gin-vue-admin/server/global"
"gorm.io/gorm"
)
func
DBList
()
{
dbMap
:=
make
(
map
[
string
]
*
gorm
.
DB
)
for
_
,
info
:=
range
global
.
GVA_CONFIG
.
DBList
{
if
info
.
Disable
{
continue
}
switch
info
.
Type
{
case
"mysql"
:
dbMap
[
info
.
Dbname
]
=
GormMysqlByConfig
(
info
)
case
"pgsql"
:
dbMap
[
info
.
Dbname
]
=
GormPgSqlByConfig
(
info
)
default
:
continue
}
}
global
.
GVA_DBList
=
dbMap
}
server/initialize/gorm_mysql.go
浏览文件 @
e3df65f3
package
initialize
import
(
"github.com/flipped-aurora/gin-vue-admin/server/config"
"github.com/flipped-aurora/gin-vue-admin/server/global"
"github.com/flipped-aurora/gin-vue-admin/server/initialize/internal"
"gorm.io/driver/mysql"
...
...
@@ -29,3 +30,23 @@ func GormMysql() *gorm.DB {
return
db
}
}
// GormMysqlByConfig 初始化Mysql数据库用过传入配置
func
GormMysqlByConfig
(
m
config
.
DB
)
*
gorm
.
DB
{
if
m
.
Dbname
==
""
{
return
nil
}
mysqlConfig
:=
mysql
.
Config
{
DSN
:
m
.
Dsn
(),
// DSN data source name
DefaultStringSize
:
191
,
// string 类型字段的默认长度
SkipInitializeWithVersion
:
false
,
// 根据版本自动配置
}
if
db
,
err
:=
gorm
.
Open
(
mysql
.
New
(
mysqlConfig
),
internal
.
Gorm
.
Config
());
err
!=
nil
{
panic
(
err
)
}
else
{
sqlDB
,
_
:=
db
.
DB
()
sqlDB
.
SetMaxIdleConns
(
m
.
MaxIdleConns
)
sqlDB
.
SetMaxOpenConns
(
m
.
MaxOpenConns
)
return
db
}
}
server/initialize/gorm_pgsql.go
浏览文件 @
e3df65f3
package
initialize
import
(
"github.com/flipped-aurora/gin-vue-admin/server/config"
"github.com/flipped-aurora/gin-vue-admin/server/global"
"github.com/flipped-aurora/gin-vue-admin/server/initialize/internal"
"gorm.io/driver/postgres"
...
...
@@ -28,3 +29,22 @@ func GormPgSql() *gorm.DB {
return
db
}
}
// GormPgSqlByConfig 初始化 Postgresql 数据库 通过参数
func
GormPgSqlByConfig
(
p
config
.
DB
)
*
gorm
.
DB
{
if
p
.
Dbname
==
""
{
return
nil
}
pgsqlConfig
:=
postgres
.
Config
{
DSN
:
p
.
Dsn
(),
// DSN data source name
PreferSimpleProtocol
:
false
,
}
if
db
,
err
:=
gorm
.
Open
(
postgres
.
New
(
pgsqlConfig
),
internal
.
Gorm
.
Config
());
err
!=
nil
{
panic
(
err
)
}
else
{
sqlDB
,
_
:=
db
.
DB
()
sqlDB
.
SetMaxIdleConns
(
p
.
MaxIdleConns
)
sqlDB
.
SetMaxOpenConns
(
p
.
MaxOpenConns
)
return
db
}
}
server/main.go
浏览文件 @
e3df65f3
...
...
@@ -23,6 +23,7 @@ func main() {
global
.
GVA_LOG
=
core
.
Zap
()
// 初始化zap日志库
global
.
GVA_DB
=
initialize
.
Gorm
()
// gorm连接数据库
initialize
.
Timer
()
initialize
.
DBList
()
if
global
.
GVA_DB
!=
nil
{
initialize
.
RegisterTables
(
global
.
GVA_DB
)
// 初始化表
// 程序结束前关闭数据库链接
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录