Skip to content

Commit

Permalink
Merge pull request #17 from DaydreamCafe/Dev
Browse files Browse the repository at this point in the history
🎨 修复Postgresql数据库提示“对不起,已经有太多的客户端了的BUG, 代码逻辑优化
  • Loading branch information
WhitePaper233 authored Jul 25, 2022
2 parents b103ed1 + fcc3427 commit 0c4edcb
Show file tree
Hide file tree
Showing 14 changed files with 214 additions and 231 deletions.
7 changes: 7 additions & 0 deletions builtin/help/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,13 @@ func getPluginUsage(name string) string {
return "未找到该插件的帮助信息"
}

sqlDB, err := db.DB()
if err != nil {
logger.Error("获取数据库连接失败:", err)
return "未找到该插件的帮助信息"
}
defer sqlDB.Close()

plugin_metadata := model.Plugin{}
db.Where("name = ?", name).First(&plugin_metadata)
if plugin_metadata.Usage == "" {
Expand Down
6 changes: 6 additions & 0 deletions builtin/plugin_manager/database.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,12 @@ func initDatabase() {
logger.Panicln(err)
}

sqlDB, err := db.DB()
if err != nil {
logger.Panicln(err)
}
defer sqlDB.Close()

// pluginModels 插件元数据表模型切片
var pluginModels []model.Plugin

Expand Down
35 changes: 35 additions & 0 deletions builtin/plugin_manager/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,13 @@ func getPluginList() string {
return "查询插件列表失败: 数据库连接失败"
}

sqlDB, err := db.DB()
if err != nil {
logger.Errorln("数据库连接失败: ", err)
return "查询插件列表失败: 数据库连接失败"
}
defer sqlDB.Close()

var plugins []model.Plugin
err = db.Find(&plugins).Error
if err != nil {
Expand Down Expand Up @@ -198,6 +205,13 @@ func banPlugin(pluginName string) error {
return errors.New("数据库连接失败")
}

sqlDB, err := db.DB()
if err != nil {
logger.Errorln("连接数据库失败: ", err)
return errors.New("数据库连接失败")
}
defer sqlDB.Close()

// 查询插件是否存在
var plugin model.GlobalPluginManagement
err = db.Where("name = ?", pluginName).First(&plugin).Error
Expand Down Expand Up @@ -239,6 +253,13 @@ func unbanPlugin(pluginName string) error {
return errors.New("数据库连接失败")
}

sqlDB, err := db.DB()
if err != nil {
logger.Errorln("连接数据库失败: ", err)
return errors.New("数据库连接失败")
}
defer sqlDB.Close()

// 查询插件是否存在
var plugin model.GlobalPluginManagement
err = db.Where("name = ?", pluginName).First(&plugin).Error
Expand Down Expand Up @@ -280,6 +301,13 @@ func enablePlugin(pluginName string, groupID int64) error {
return errors.New("数据库连接失败")
}

sqlDB, err := db.DB()
if err != nil {
logger.Errorln("连接数据库失败: ", err)
return errors.New("数据库连接失败")
}
defer sqlDB.Close()

// 判断是否为内建插件
var pluginInfo model.GlobalPluginManagement
err = db.Where("name = ?", pluginName).First(&pluginInfo).Error
Expand Down Expand Up @@ -379,6 +407,13 @@ func disablePlugin(pluginName string, groupID int64) error {
return errors.New("数据库连接失败")
}

sqlDB, err := db.DB()
if err != nil {
logger.Errorln("连接数据库失败: ", err)
return errors.New("数据库连接失败")
}
defer sqlDB.Close()

// 判断是否为内建插件
var pluginInfo model.GlobalPluginManagement
err = db.Where("name = ?", pluginName).First(&pluginInfo).Error
Expand Down
6 changes: 6 additions & 0 deletions builtin/user_manager/database.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,12 @@ func initDatabase() {
logger.Panicln("数据库连接失败: ", err)
}

sqlDB, err := db.DB()
if err != nil {
logger.Panicln("数据库连接失败: ", err)
}
defer sqlDB.Close()

/*
初始化封禁表
*/
Expand Down
28 changes: 28 additions & 0 deletions builtin/user_manager/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,13 @@ func setPermissionLevel(QID int64, targetLevel int64) error {
return errors.New("指令执行失败: 无法连接到数据库")
}

sqlDB, err := db.DB()
if err != nil {
logger.Errorln("更新用户权限失败: ", err)
return errors.New("指令执行失败: 无法连接到数据库")
}
defer sqlDB.Close()

// 查询表中是否有记录
var count int64
err = db.Model(&model.UserPremissionModel{}).Count(&count).Error
Expand Down Expand Up @@ -208,6 +215,13 @@ func banUser(QID int64, targetTime int64) error {
return errors.New("指令执行失败: 无法连接到数据库")
}

sqlDB, err := db.DB()
if err != nil {
logger.Errorln("封禁用户失败: ", err)
return errors.New("指令执行失败: 无法连接到数据库")
}
defer sqlDB.Close()

// 判断目标用户是否为SU
var userPermission model.UserPremissionModel
// 查询表中是否有记录
Expand Down Expand Up @@ -311,6 +325,13 @@ func pardonUser(QID int64) error {
return errors.New("指令执行失败: 无法连接到数据库")
}

sqlDB, err := db.DB()
if err != nil {
logger.Errorln("解封用户失败: ", err)
return errors.New("指令执行失败: 无法连接到数据库")
}
defer sqlDB.Close()

// 判断目标用户是否为SU
var userPermission model.UserPremissionModel
// 查询表中是否有记录
Expand Down Expand Up @@ -379,6 +400,13 @@ func resetUser(QID int64) error {
return errors.New("指令执行失败: 无法连接到数据库")
}

sqlDB, err := db.DB()
if err != nil {
logger.Errorln("重置用户等级和封禁时间失败: ", err)
return errors.New("指令执行失败: 无法连接到数据库")
}
defer sqlDB.Close()

// 重置用户等级
var userPermission model.UserPremissionModel
// 查询表中是否有记录
Expand Down
3 changes: 0 additions & 3 deletions plugins/bilibili_parse/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,6 @@ func init() {
// 处理av号或者BV号
engine.OnRegex(VIDRegex, zero.OnlyGroup).Handle(handleVideoID)

// 匹配移动端卡片分享信息
engine.OnMessage(zero.OnlyGroup).Handle(handleMobileShare)

// 匹配短链接
engine.OnRegex(ShortLinkRegex, zero.OnlyGroup).Handle(handleShortLink)
}
118 changes: 0 additions & 118 deletions plugins/bilibili_parse/mobile_share_handler.go

This file was deleted.

8 changes: 0 additions & 8 deletions plugins/bilibili_parse/short_link_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,6 @@ import (

// handleShortLink 短链接handler
func handleShortLink(ctx *zero.Ctx) {
// 如果是卡片信息, 则跳过
if strings.HasPrefix(
ctx.Event.RawMessage,
`[CQ:json,data={"app":"com.tencent.miniapp_01",`,
) {
return
}

logger.Debugln("匹配短链分享信息成功,MessageId:", ctx.Event.MessageID)
// 匹配结果
results := compiledShortLinkRegex.FindAllStringSubmatch(ctx.MessageString(), -1)
Expand Down
6 changes: 3 additions & 3 deletions src/conn/conn.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ var (

// dsn 数据库连接字符串
dsn string

// db 数据库对象指针
db *gorm.DB
)

func init() {
Expand All @@ -37,15 +40,12 @@ func init() {

// GetDB 获取数据库对象指针
func GetDB() (*gorm.DB, error) {
var db *gorm.DB
var err error
// open database
db, err = gorm.Open(
postgres.New(
postgres.Config{
DSN: dsn,
// disables implicit prepared statement usage
PreferSimpleProtocol: true,
},
),
&gorm.Config{
Expand Down
6 changes: 6 additions & 0 deletions src/init/migrate.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,12 @@ func init() {
logger.Panicln(err)
}

sqlDB, err := db.DB()
if err != nil {
logger.Panicln(err)
}
defer sqlDB.Close()

db.Exec("DROP TABLE IF EXISTS plugin;")
// 迁移插件元数据表
err = db.AutoMigrate(&model.Plugin{})
Expand Down
Loading

0 comments on commit 0c4edcb

Please sign in to comment.