From 572b53086317eb6f06dd82286f079618bfce8536 Mon Sep 17 00:00:00 2001 From: somebodywashere <68244480+somebodywashere@users.noreply.github.com> Date: Wed, 20 Mar 2024 18:19:33 +0300 Subject: [PATCH] Add gormStatement.RaiseErrorOnNotFound in few places --- sub/subService.go | 2 ++ web/job/check_client_ip_job.go | 7 ++++--- web/service/inbound.go | 10 +++++----- web/service/tgbot.go | 2 +- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/sub/subService.go b/sub/subService.go index 0ed1d454..5cdb85d4 100644 --- a/sub/subService.go +++ b/sub/subService.go @@ -102,6 +102,7 @@ func (s *SubService) GetSubs(subId string, host string) ([]string, string, error func (s *SubService) getInboundsBySubId(subId string) ([]*model.Inbound, error) { db := database.GetDB() + db.Statement.RaiseErrorOnNotFound = true var inbounds []*model.Inbound err := db.Model(model.Inbound{}).Preload("ClientStats").Where(`id in ( SELECT DISTINCT inbounds.id @@ -128,6 +129,7 @@ func (s *SubService) getClientTraffics(traffics []xray.ClientTraffic, email stri func (s *SubService) getFallbackMaster(dest string, streamSettings string) (string, int, string, error) { db := database.GetDB() + db.Statement.RaiseErrorOnNotFound = true var inbound *model.Inbound err := db.Model(model.Inbound{}). Where("JSON_TYPE(settings, '$.fallbacks') = 'array'"). diff --git a/web/job/check_client_ip_job.go b/web/job/check_client_ip_job.go index c5e8fc0d..dba1c835 100644 --- a/web/job/check_client_ip_job.go +++ b/web/job/check_client_ip_job.go @@ -82,6 +82,7 @@ func (j *CheckClientIpJob) clearAccessLog() { func (j *CheckClientIpJob) hasLimitIp() bool { db := database.GetDB() + db.Statement.RaiseErrorOnNotFound = true var inbounds []*model.Inbound err := db.Model(model.Inbound{}).Find(&inbounds).Error @@ -259,10 +260,9 @@ func (j *CheckClientIpJob) updateInboundClientIps(inboundClientIps *model.Inboun // check inbound limitation inbound, err := j.getInboundByEmail(clientEmail) - j.checkError(err) - if inbound.Settings == "" { - logger.Debug("wrong data ", inbound) + if err != nil { + logger.Debug(inbound, ":", err) return false } @@ -313,6 +313,7 @@ func (j *CheckClientIpJob) updateInboundClientIps(inboundClientIps *model.Inboun func (j *CheckClientIpJob) getInboundByEmail(clientEmail string) (*model.Inbound, error) { db := database.GetDB() + db.Statement.RaiseErrorOnNotFound = true var inbounds *model.Inbound err := db.Model(model.Inbound{}).Where("settings LIKE ?", "%"+clientEmail+"%").Find(&inbounds).Error diff --git a/web/service/inbound.go b/web/service/inbound.go index e37a2d5a..285b6097 100644 --- a/web/service/inbound.go +++ b/web/service/inbound.go @@ -824,6 +824,7 @@ func (s *InboundService) adjustTraffics(tx *gorm.DB, dbClientTraffics []*xray.Cl if len(inboundIds) > 0 { var inbounds []*model.Inbound + tx.Statement.RaiseErrorOnNotFound = true err := tx.Model(model.Inbound{}).Where("id IN (?)", inboundIds).Find(&inbounds).Error if err != nil { return nil, err @@ -893,6 +894,7 @@ func (s *InboundService) autoRenewClients(tx *gorm.DB) (bool, int64, error) { for _, traffic := range traffics { inbound_ids = append(inbound_ids, traffic.InboundId) } + tx.Statement.RaiseErrorOnNotFound = true err = tx.Model(model.Inbound{}).Where("id IN ?", inbound_ids).Find(&inbounds).Error if err != nil { return false, 0, err @@ -1675,12 +1677,10 @@ func (s *InboundService) GetClientTrafficTgBot(tgId string) ([]*xray.ClientTraff var traffics []*xray.ClientTraffic err = db.Model(xray.ClientTraffic{}).Where("email IN ?", emails).Find(&traffics).Error if err != nil { - if err == gorm.ErrRecordNotFound { - logger.Warning(err) - return nil, err - } + logger.Warning(err) + return nil, err } - return traffics, err + return traffics, nil } func (s *InboundService) GetClientTrafficByEmail(email string) (traffic *xray.ClientTraffic, err error) { diff --git a/web/service/tgbot.go b/web/service/tgbot.go index d534f3ac..076b22a8 100644 --- a/web/service/tgbot.go +++ b/web/service/tgbot.go @@ -1469,7 +1469,7 @@ func (t *Tgbot) notifyExhausted() { var disabledClients []xray.ClientTraffic var exhaustedClients []xray.ClientTraffic traffics, err := t.inboundService.GetClientTrafficTgBot(client.TgID) - if err == nil { + if err == nil && len (traffics) > 0 { output := t.I18nBot("tgbot.messages.exhaustedCount", "Type=="+t.I18nBot("tgbot.clients")) for _, traffic := range traffics { if traffic.Enable {