From 50a67490700df0fc28ac95aab9b7e9bf5b851a9a Mon Sep 17 00:00:00 2001 From: Li4n0 <34324462+Li4n0@users.noreply.github.com> Date: Sun, 25 Apr 2021 14:15:42 +0800 Subject: [PATCH] refactor: standardization of code structure (#7) --- internal/qqwry/wry.go | 2 +- internal/rule/rule.go | 2 +- pkg/dns/dns.go | 7 +++---- pkg/dns/record.go | 9 ++++----- pkg/dns/rule.go | 16 ++++++++-------- pkg/ftp/ftp.go | 15 +++++++-------- pkg/ftp/record.go | 7 +++---- pkg/ftp/rule.go | 10 +++++----- pkg/mysql/mysql.go | 25 +++++++++++-------------- pkg/mysql/record.go | 9 ++++----- pkg/mysql/rule.go | 16 ++++++++-------- pkg/rhttp/http.go | 7 +++---- pkg/rhttp/record.go | 9 ++++----- pkg/rhttp/rule.go | 14 +++++++------- pkg/rmi/record.go | 9 ++++----- pkg/rmi/rmi.go | 17 ++++++++--------- pkg/rmi/rule.go | 14 +++++++------- 17 files changed, 88 insertions(+), 100 deletions(-) diff --git a/internal/qqwry/wry.go b/internal/qqwry/wry.go index f77cbb9..d763826 100644 --- a/internal/qqwry/wry.go +++ b/internal/qqwry/wry.go @@ -18,7 +18,7 @@ func init() { if os.IsNotExist(err) { err := download() if err != nil { - log.Error("Download qqwry.dat failed, caused by:%v, recommend to download it by yourself otherwise the `IpArea` will be null", err.Error()) + log.Error("Download qqwry.dat failed, caused by:%v, recommend to download it by yourself otherwise the `IpArea` will be null", err) } } } else if time.Until(info.ModTime()) > 5*24*time.Hour { diff --git a/internal/rule/rule.go b/internal/rule/rule.go index dc69590..6908b97 100644 --- a/internal/rule/rule.go +++ b/internal/rule/rule.go @@ -35,7 +35,7 @@ func (br BaseRule) Match(s string) (flag, flagGroup string, vars map[string]stri return } else { if catcher, err := regexp.Compile(br.FlagFormat); err != nil { - log.Error("%s(rule:%s)", err.Error(), br.Name) + log.Error("%s[rule:%s]", err, br.Name) return } else { br.flagCatcher = catcher diff --git a/pkg/dns/dns.go b/pkg/dns/dns.go index ec2eeed..3cf5a0b 100644 --- a/pkg/dns/dns.go +++ b/pkg/dns/dns.go @@ -39,10 +39,9 @@ func (s *Server) getRules() []*Rule { func (s *Server) updateRules() error { db := database.DB.Model(new(Rule)) + defer s.rulesLock.Unlock() s.rulesLock.Lock() - db.Order("rank desc").Find(&s.rules) - s.rulesLock.Unlock() - return nil + return db.Order("rank desc").Find(&s.rules).Error } func (s *Server) Run() { @@ -80,7 +79,7 @@ func (s *Server) Run() { r, err := newRecord(_rule, flag, domain, ip, qqwry.Area(ip)) if err != nil { - log.Error("DNS record(rule_id:%s) created failed :%s", _rule.Name, err.Error()) + log.Error("DNS record(rule_id:%s) created failed :%s", _rule.Name, err) return nil, nil } log.Info("DNS record[id:%d rule:%s remote_ip:%s] has been created", r.ID, _rule.Name, ip) diff --git a/pkg/dns/record.go b/pkg/dns/record.go index c59da51..edafe4c 100644 --- a/pkg/dns/record.go +++ b/pkg/dns/record.go @@ -38,8 +38,7 @@ func newRecord(rule *Rule, flag, domain, remoteIp, ipArea string) (r *Record, er Domain: domain, Rule: *rule, } - err = database.DB.Create(r).Error - return r, err + return r, database.DB.Create(r).Error } func ListRecords(c *gin.Context) { @@ -75,20 +74,20 @@ func ListRecords(c *gin.Context) { if err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "result": nil, }) return } - if order != "desc" && order != "asc" { + if order != "asc" { order = "desc" } if err := db.Order("id" + " " + order).Count(&count).Offset((page - 1) * 10).Limit(10).Find(&res).Error; err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "data": nil, }) return diff --git a/pkg/dns/rule.go b/pkg/dns/rule.go index f4e274c..907de90 100644 --- a/pkg/dns/rule.go +++ b/pkg/dns/rule.go @@ -85,7 +85,7 @@ func ListRules(c *gin.Context) { if err := c.ShouldBind(&dnsRule); err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "result": nil, }) return @@ -101,20 +101,20 @@ func ListRules(c *gin.Context) { if err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "result": nil, }) return } - if order != "desc" && order != "asc" { + if order != "asc" { order = "desc" } if err := db.Order("rank desc").Order("id" + " " + order).Count(&count).Offset((page - 1) * 10).Limit(10).Find(&res).Error; err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "data": nil, }) return @@ -137,7 +137,7 @@ func UpsertRules(c *gin.Context) { if err := c.ShouldBind(&dnsRule); err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "data": nil, }) return @@ -150,7 +150,7 @@ func UpsertRules(c *gin.Context) { if err := dnsRule.CreateOrUpdate(); err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "data": nil, }) return @@ -176,7 +176,7 @@ func DeleteRules(c *gin.Context) { if err := c.ShouldBind(&dnsRule); err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "data": nil, }) return @@ -185,7 +185,7 @@ func DeleteRules(c *gin.Context) { if err := dnsRule.Delete(); err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "data": nil, }) return diff --git a/pkg/ftp/ftp.go b/pkg/ftp/ftp.go index f07236a..20467bb 100644 --- a/pkg/ftp/ftp.go +++ b/pkg/ftp/ftp.go @@ -48,21 +48,20 @@ func (s *Server) getRules() []*Rule { func (s *Server) updateRules() error { db := database.DB.Model(new(Rule)) + defer s.rulesLock.Unlock() s.rulesLock.Lock() - db.Order("rank desc").Find(&s.rules) - s.rulesLock.Unlock() - return nil + return db.Order("rank desc").Find(&s.rules).Error } func (s *Server) handleConnection(conn net.Conn) { defer conn.Close() if err := conn.SetDeadline(time.Now().Add(time.Second * 30)); err != nil { - log.Error("FTP set connection deadline error:%v", err.Error()) + log.Error("FTP set connection deadline error:%v", err) } if _, err := conn.Write([]byte("220 (vsFTPd 3.0.2)\r\n")); err != nil { - log.Error("FTP write connection error:%v", err.Error()) + log.Error("FTP write connection error:%v", err) } ip := strings.Split(conn.RemoteAddr().String(), ":")[0] @@ -126,12 +125,12 @@ loop: pasvAddress := rule.CompileTpl(matchedRule.PasvAddress, vars) pasvIP, pasvPort, err := net.SplitHostPort(pasvAddress) if err != nil { - log.Warn("FTP failed to split rule[id%d] pasv_address(%s) :%s", matchedRule.ID, pasvAddress, err.Error()) + log.Warn("FTP failed to split rule[id%d] pasv_address(%s) :%s", matchedRule.ID, pasvAddress, err) break } port, err := strconv.Atoi(pasvPort) if err != nil { - log.Warn("FTP failed to convert rule[id%d] pasv_port(%s) :%s", matchedRule.ID, pasvPort, err.Error()) + log.Warn("FTP failed to convert rule[id%d] pasv_port(%s) :%s", matchedRule.ID, pasvPort, err) break } ret = fmt.Sprintf("227 Entering Passive Mode (%s,%v,%d)\r\n", strings.ReplaceAll(pasvIP, ".", ","), float64(port/256), port%256) @@ -159,7 +158,7 @@ loop: // create new record r, err := NewRecord(_rule, flag, user, password, path, ip, area, status) if err != nil { - log.Error("FTP record[rule_id:%d] created failed :%s", _rule.ID, err.Error()) + log.Error("FTP record[rule_id:%d] created failed :%s", _rule.ID, err) return } log.Info("FTP record[id:%d rule:%s remote_ip:%s] has been created", r.ID, _rule.Name, ip) diff --git a/pkg/ftp/record.go b/pkg/ftp/record.go index c18a98b..94364d0 100644 --- a/pkg/ftp/record.go +++ b/pkg/ftp/record.go @@ -43,8 +43,7 @@ func NewRecord(rule *Rule, flag, user, password, path, ip, area string, status S Status: status, Rule: *rule, } - err = database.DB.Create(r).Error - return r, err + return r, database.DB.Create(r).Error } func ListRecords(c *gin.Context) { @@ -85,7 +84,7 @@ func ListRecords(c *gin.Context) { if err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "result": nil, }) return @@ -98,7 +97,7 @@ func ListRecords(c *gin.Context) { if err := db.Order("id" + " " + order).Count(&count).Offset((page - 1) * 10).Limit(10).Find(&res).Error; err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "data": nil, }) return diff --git a/pkg/ftp/rule.go b/pkg/ftp/rule.go index 7f2c483..09df82c 100644 --- a/pkg/ftp/rule.go +++ b/pkg/ftp/rule.go @@ -94,7 +94,7 @@ func ListRules(c *gin.Context) { if err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "result": nil, }) return @@ -130,7 +130,7 @@ func UpsertRules(c *gin.Context) { if err := c.ShouldBind(&ftpRule); err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "data": nil, }) return @@ -143,7 +143,7 @@ func UpsertRules(c *gin.Context) { if err := ftpRule.CreateOrUpdate(); err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "result": nil, }) return @@ -169,7 +169,7 @@ func DeleteRules(c *gin.Context) { if err := c.ShouldBind(&ftpRule); err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "data": nil, }) return @@ -178,7 +178,7 @@ func DeleteRules(c *gin.Context) { if err := ftpRule.Delete(); err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "data": nil, }) return diff --git a/pkg/mysql/mysql.go b/pkg/mysql/mysql.go index 95ac8b0..30a77df 100644 --- a/pkg/mysql/mysql.go +++ b/pkg/mysql/mysql.go @@ -47,10 +47,9 @@ func (s *Server) getRules() []*Rule { func (s *Server) updateRules() error { db := database.DB.Model(new(Rule)) + defer s.rulesLock.Unlock() s.rulesLock.Lock() - db.Order("rank desc").Find(&s.rules) - s.rulesLock.Unlock() - return nil + return db.Order("rank desc").Find(&s.rules).Error } // NewConnection is part of the mysql.Handler interface. @@ -90,28 +89,26 @@ func (s *Server) NewConnection(c *vmysql.Conn) { func (s *Server) ConnectionClosed(c *vmysql.Conn) { log.Trace("MySQL Client leaved, ID [%d]", c.ConnectionID) - var ( - user = c.User - schema = c.SchemaName - supportLoadLocalData = c.SupportLoadDataLocal - cr, ok = s.connRulePool.Load(c.ConnectionID) - clientName, clientOS, flag, flagGroup string - ) + var clientName, clientOS, flag, flagGroup string + user := c.User + schema := c.SchemaName + supportLoadLocalData := c.SupportLoadDataLocal + + cr, ok := s.connRulePool.Load(c.ConnectionID) if !ok { + log.Error("MySQL Connection rule(%d) not match flag", c.ConnectionID) return } _rule := cr.(*Rule) + // flag must not be empty for _, s := range []string{user, schema} { flag, flagGroup, _ = _rule.Match(s) if flag != "" { break } } - if flag == "" { - log.Error("MySQL Connection rule(%d) not match flag", c.ConnectionID) - } if c.ConnAttrs != nil { clientName = c.ConnAttrs["_client_name"] + " " + c.ConnAttrs["_client_version"] @@ -130,7 +127,7 @@ func (s *Server) ConnectionClosed(c *vmysql.Conn) { r, err := newRecord(_rule, flag, user, clientName, clientOS, ip, qqwry.Area(ip), supportLoadLocalData, files) if err != nil { - log.Error("MySQL record(rule_id:%s) created failed :%s", _rule.Name, err.Error()) + log.Error("MySQL record(rule_id:%s) created failed :%s", _rule.Name, err) return } log.Info("MySQL record[id:%d rule:%s remote_ip:%s] has been created", r.ID, _rule.Name, ip) diff --git a/pkg/mysql/record.go b/pkg/mysql/record.go index a697a09..12ca7dd 100644 --- a/pkg/mysql/record.go +++ b/pkg/mysql/record.go @@ -45,8 +45,7 @@ func newRecord(rule *Rule, flag, username, clientName, clientOS, remoteIp, ipAre Files: files, Rule: *rule, } - err = database.DB.Create(r).Error - return r, err + return r, database.DB.Create(r).Error } func ListRecords(c *gin.Context) { @@ -93,20 +92,20 @@ func ListRecords(c *gin.Context) { if err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "result": nil, }) return } - if order != "desc" && order != "asc" { + if order != "asc" { order = "desc" } if err := db.Preload("Files").Order("id" + " " + order).Count(&count).Offset((page - 1) * 10).Limit(10).Find(&res).Error; err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "data": nil, }) return diff --git a/pkg/mysql/rule.go b/pkg/mysql/rule.go index 614c0d0..4b2d03b 100644 --- a/pkg/mysql/rule.go +++ b/pkg/mysql/rule.go @@ -68,7 +68,7 @@ func ListRules(c *gin.Context) { if err := c.ShouldBind(&mysqlRule); err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "result": nil, }) return @@ -84,20 +84,20 @@ func ListRules(c *gin.Context) { if err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "result": nil, }) return } - if order != "desc" && order != "asc" { + if order != "asc" { order = "desc" } if err := db.Order("rank desc").Order("id" + " " + order).Count(&count).Offset((page - 1) * 10).Limit(10).Find(&res).Error; err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "data": nil, }) return @@ -120,7 +120,7 @@ func UpsertRules(c *gin.Context) { if err := c.ShouldBind(&mysqlRule); err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "data": nil, }) return @@ -133,7 +133,7 @@ func UpsertRules(c *gin.Context) { if err := mysqlRule.CreateOrUpdate(); err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "data": nil, }) return @@ -159,7 +159,7 @@ func DeleteRules(c *gin.Context) { if err := c.ShouldBind(&mysqlRule); err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "data": nil, }) return @@ -168,7 +168,7 @@ func DeleteRules(c *gin.Context) { if err := mysqlRule.Delete(); err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "data": nil, }) return diff --git a/pkg/rhttp/http.go b/pkg/rhttp/http.go index 9981b0e..e824918 100644 --- a/pkg/rhttp/http.go +++ b/pkg/rhttp/http.go @@ -81,10 +81,9 @@ func (s *Server) getRules() []*Rule { func (s *Server) updateRules() error { db := database.DB.Model(new(Rule)) + defer s.rulesLock.Unlock() s.rulesLock.Lock() - db.Order("rank desc").Find(&s.rules) - s.rulesLock.Unlock() - return nil + return db.Order("rank desc").Find(&s.rules).Error } func (s *Server) Run() { @@ -153,7 +152,7 @@ func (s *Server) Receive(c *gin.Context) { // create new record r, err := NewRecord(_rule, flag, c.Request.Method, u, ip, area, string(raw)) if err != nil { - log.Error("HTTP record[rule_id:%d] created failed :%s", _rule.ID, err.Error()) + log.Error("HTTP record[rule_id:%d] created failed :%s", _rule.ID, err) code, err := strconv.Atoi(compileTpl(c, _rule.ResponseStatusCode, vars)) if err != nil || code < 100 || code > 600 { code = 400 diff --git a/pkg/rhttp/record.go b/pkg/rhttp/record.go index 52e0fda..d26ec07 100644 --- a/pkg/rhttp/record.go +++ b/pkg/rhttp/record.go @@ -41,8 +41,7 @@ func NewRecord(rule *Rule, flag, method, url, ip, area, raw string) (r *Record, RawRequest: raw, Rule: *rule, } - err = database.DB.Create(r).Error - return r, err + return r, database.DB.Create(r).Error } func ListRecords(c *gin.Context) { @@ -83,20 +82,20 @@ func ListRecords(c *gin.Context) { if err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "result": nil, }) return } - if order != "desc" && order != "asc" { + if order != "asc" { order = "desc" } if err := db.Order("id" + " " + order).Count(&count).Offset((page - 1) * 10).Limit(10).Find(&res).Error; err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "data": nil, }) return diff --git a/pkg/rhttp/rule.go b/pkg/rhttp/rule.go index 61736c7..cdf549c 100644 --- a/pkg/rhttp/rule.go +++ b/pkg/rhttp/rule.go @@ -102,20 +102,20 @@ func ListRules(c *gin.Context) { if err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "result": nil, }) return } - if order != "desc" && order != "asc" { + if order != "asc" { order = "desc" } if err := db.Order("rank desc").Order("id" + " " + order).Count(&count).Offset((page - 1) * 10).Limit(10).Find(&res).Error; err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "data": nil, }) return @@ -138,7 +138,7 @@ func UpsertRules(c *gin.Context) { if err := c.ShouldBind(&httpRule); err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "data": nil, }) return @@ -151,7 +151,7 @@ func UpsertRules(c *gin.Context) { if err := httpRule.CreateOrUpdate(); err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "result": nil, }) return @@ -177,7 +177,7 @@ func DeleteRules(c *gin.Context) { if err := c.ShouldBind(&httpRule); err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "data": nil, }) return @@ -186,7 +186,7 @@ func DeleteRules(c *gin.Context) { if err := httpRule.Delete(); err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "data": nil, }) return diff --git a/pkg/rmi/record.go b/pkg/rmi/record.go index 20b6661..45ab774 100644 --- a/pkg/rmi/record.go +++ b/pkg/rmi/record.go @@ -37,8 +37,7 @@ func NewRecord(rule *Rule, flag, path, ip, area string) (r *Record, err error) { Path: path, Rule: *rule, } - err = database.DB.Create(r).Error - return r, err + return r, database.DB.Create(r).Error } func ListRecords(c *gin.Context) { @@ -76,20 +75,20 @@ func ListRecords(c *gin.Context) { if err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "result": nil, }) return } - if order != "desc" && order != "asc" { + if order != "asc" { order = "desc" } if err := db.Order("id" + " " + order).Count(&count).Offset((page - 1) * 10).Limit(10).Find(&res).Error; err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "data": nil, }) return diff --git a/pkg/rmi/rmi.go b/pkg/rmi/rmi.go index 8cb0955..b3349ca 100644 --- a/pkg/rmi/rmi.go +++ b/pkg/rmi/rmi.go @@ -40,17 +40,16 @@ func (s *Server) getRules() []*Rule { func (s *Server) updateRules() error { db := database.DB.Model(new(Rule)) + defer s.rulesLock.Unlock() s.rulesLock.Lock() - db.Order("rank desc").Find(&s.rules) - s.rulesLock.Unlock() - return nil + return db.Order("rank desc").Find(&s.rules).Error } func (s *Server) handleConnection(conn net.Conn) { defer conn.Close() if err := conn.SetDeadline(time.Now().Add(time.Second * 30)); err != nil { - log.Error("RMI set connection deadline error:%v", err.Error()) + log.Error("RMI set connection deadline error:%v", err) } ip, port, _ := net.SplitHostPort(conn.RemoteAddr().String()) @@ -58,7 +57,7 @@ func (s *Server) handleConnection(conn net.Conn) { buf := make([]byte, 1024) _, err := conn.Read(buf) if err != nil { - log.Error("RMI read connection error:%v", err.Error()) + log.Error("RMI read connection error:%v", err) } if !bytes.Contains(buf, []byte{0x4a, 0x52, 0x4d, 0x49}) { @@ -78,7 +77,7 @@ func (s *Server) handleConnection(conn net.Conn) { _, err = conn.Write(send) if err != nil { - log.Error("RMI write connection error: %v", err.Error()) + log.Error("RMI write connection error: %v", err) } data := make([]byte, 512) @@ -86,7 +85,7 @@ func (s *Server) handleConnection(conn net.Conn) { for length := 0; length < 50; { n, err := conn.Read(data) if err != nil { - log.Error("RMI read connection error: %v", err.Error()) + log.Error("RMI read connection error: %v", err) } length += n } @@ -105,7 +104,7 @@ func (s *Server) handleConnection(conn net.Conn) { // create new record r, err := NewRecord(_rule, flag, path, ip, area) if err != nil { - log.Error("RMI record[rule_id:%d] created failed :%s", _rule.ID, err.Error()) + log.Error("RMI record[rule_id:%d] created failed :%s", _rule.ID, err) return } log.Info("RMI record[id:%d rule:%s remote_ip:%s] has been created", r.ID, _rule.Name, ip) @@ -150,7 +149,7 @@ func (s *Server) Run() { for { tcpConn, err := listener.Accept() if err != nil { - log.Error("RMI accept connection error: %v", err.Error()) + log.Error("RMI accept connection error: %v", err) continue } go s.handleConnection(tcpConn) diff --git a/pkg/rmi/rule.go b/pkg/rmi/rule.go index 6436042..a522b7f 100644 --- a/pkg/rmi/rule.go +++ b/pkg/rmi/rule.go @@ -93,20 +93,20 @@ func ListRules(c *gin.Context) { if err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "result": nil, }) return } - if order != "desc" && order != "asc" { + if order != "asc" { order = "desc" } if err := db.Order("rank desc").Order("id" + " " + order).Count(&count).Offset((page - 1) * 10).Limit(10).Find(&res).Error; err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "data": nil, }) return @@ -129,7 +129,7 @@ func UpsertRules(c *gin.Context) { if err := c.ShouldBind(&rmiRule); err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "data": nil, }) return @@ -142,7 +142,7 @@ func UpsertRules(c *gin.Context) { if err := rmiRule.CreateOrUpdate(); err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "result": nil, }) return @@ -168,7 +168,7 @@ func DeleteRules(c *gin.Context) { if err := c.ShouldBind(&rmiRule); err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "data": nil, }) return @@ -177,7 +177,7 @@ func DeleteRules(c *gin.Context) { if err := rmiRule.Delete(); err != nil { c.JSON(400, gin.H{ "status": "failed", - "error": err.Error(), + "error": err, "data": nil, }) return