/racs/getfaillist api support accept parameters as database query filters
This commit is contained in:
parent
802d301cb5
commit
df700fb872
16
APIServer.go
16
APIServer.go
@ -575,10 +575,24 @@ func handleRacsGetFailList(w http.ResponseWriter, r *http.Request) {
|
|||||||
if r.RequestURI == "/favicon.ico" {
|
if r.RequestURI == "/favicon.ico" {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
addr := strings.Split(r.RemoteAddr, ":")[0]
|
addr := strings.Split(r.RemoteAddr, ":")[0]
|
||||||
uri := r.RequestURI
|
uri := r.RequestURI
|
||||||
|
rst := map[string]interface{}{"Result": "OK", "ErrMsg": ""}
|
||||||
|
|
||||||
|
params, err := parseReqParams(r)
|
||||||
|
if err != nil {
|
||||||
|
rst["Result"] = "NG"
|
||||||
|
rst["ErrMsg"] = "racs.HandleGetFailList: " + err.Error()
|
||||||
|
logger.Printf("[ERR] %s; %s; %#v; %s\r\n", r.RemoteAddr, r.RequestURI, params, rst["ErrMsg"])
|
||||||
|
w.WriteHeader(http.StatusBadRequest)
|
||||||
|
fmt.Fprintf(w, "%v", strings.ReplaceAll(fmt.Sprintf("%#v", rst), "map[string]string", ""))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
racs := new(racs.RACS)
|
racs := new(racs.RACS)
|
||||||
rst := racs.GetFailList(cfg, logger, addr, uri)
|
rst = racs.GetFailList(cfg, logger, addr, uri, params)
|
||||||
rpl := strings.NewReplacer(
|
rpl := strings.NewReplacer(
|
||||||
"map[string]string", "",
|
"map[string]string", "",
|
||||||
"map[string]interface {}", "",
|
"map[string]interface {}", "",
|
||||||
|
@ -18,4 +18,5 @@ MySQL:
|
|||||||
OfflineView: v_offline
|
OfflineView: v_offline
|
||||||
StorageTable: racs
|
StorageTable: racs
|
||||||
GetFailListSQL: SELECT * FROM v_racs
|
GetFailListSQL: SELECT * FROM v_racs
|
||||||
|
GetFailListParams:
|
||||||
|
- {"Param":"LINE", "Column":"Tab_Line"}
|
||||||
|
26
cnf/cnf.go
26
cnf/cnf.go
@ -5,6 +5,11 @@ type Cfg struct {
|
|||||||
MySQL MySQL `yaml:"MySQL"`
|
MySQL MySQL `yaml:"MySQL"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type Param2Column struct {
|
||||||
|
Param string `yaml:"Param"`
|
||||||
|
Column string `yaml:"Column"`
|
||||||
|
}
|
||||||
|
|
||||||
type Settings struct {
|
type Settings struct {
|
||||||
ListenPort string `yaml:"ListenPort"`
|
ListenPort string `yaml:"ListenPort"`
|
||||||
HookScript string `yaml:"HookScript"`
|
HookScript string `yaml:"HookScript"`
|
||||||
@ -16,14 +21,15 @@ type Settings struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type MySQL struct {
|
type MySQL struct {
|
||||||
Server string `yaml:"Server"`
|
Server string `yaml:"Server"`
|
||||||
Port string `yaml:"Port"`
|
Port string `yaml:"Port"`
|
||||||
Database string `yaml:"Database"`
|
Database string `yaml:"Database"`
|
||||||
User string `yaml:"User"`
|
User string `yaml:"User"`
|
||||||
Password string `yaml:"Password"`
|
Password string `yaml:"Password"`
|
||||||
IssuesTable string `yaml:"IssuesTable"`
|
IssuesTable string `yaml:"IssuesTable"`
|
||||||
IssuesView string `yaml:"IssuesView"`
|
IssuesView string `yaml:"IssuesView"`
|
||||||
OfflineView string `yaml:"OfflineView"`
|
OfflineView string `yaml:"OfflineView"`
|
||||||
StorageTable string `yaml:"StorageTable"`
|
StorageTable string `yaml:"StorageTable"`
|
||||||
GetFailListSQL string `yaml:"GetFailListSQL"`
|
GetFailListSQL string `yaml:"GetFailListSQL"`
|
||||||
|
GetFailListParams []Param2Column `yaml:"GetFailListParams"`
|
||||||
}
|
}
|
||||||
|
30
racs/racs.go
30
racs/racs.go
@ -5,19 +5,12 @@ import (
|
|||||||
"database/sql"
|
"database/sql"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
|
"strings"
|
||||||
|
|
||||||
_ "github.com/go-sql-driver/mysql"
|
_ "github.com/go-sql-driver/mysql"
|
||||||
)
|
)
|
||||||
|
|
||||||
type RACS struct{}
|
type RACS struct{}
|
||||||
type StorageInfo struct {
|
|
||||||
USN string
|
|
||||||
Storage string
|
|
||||||
UpdateTime string
|
|
||||||
Mark1 string
|
|
||||||
Mark2 string
|
|
||||||
Mark3 string
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *RACS) Inbound(cfg cnf.Cfg, logger *log.Logger, addr string, uri string, params map[string]string) map[string]string {
|
func (r *RACS) Inbound(cfg cnf.Cfg, logger *log.Logger, addr string, uri string, params map[string]string) map[string]string {
|
||||||
rst := map[string]string{"Result": "OK", "ErrMsg": ""}
|
rst := map[string]string{"Result": "OK", "ErrMsg": ""}
|
||||||
@ -105,7 +98,7 @@ func (r *RACS) Outbound(cfg cnf.Cfg, logger *log.Logger, addr string, uri string
|
|||||||
return rst
|
return rst
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *RACS) GetFailList(cfg cnf.Cfg, logger *log.Logger, addr string, uri string) map[string]interface{} {
|
func (r *RACS) GetFailList(cfg cnf.Cfg, logger *log.Logger, addr string, uri string, params map[string]string) map[string]interface{} {
|
||||||
rst := map[string]interface{}{"Result": "OK", "ErrMsg": ""}
|
rst := map[string]interface{}{"Result": "OK", "ErrMsg": ""}
|
||||||
dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s",
|
dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s",
|
||||||
cfg.MySQL.User,
|
cfg.MySQL.User,
|
||||||
@ -122,7 +115,26 @@ func (r *RACS) GetFailList(cfg cnf.Cfg, logger *log.Logger, addr string, uri str
|
|||||||
return rst
|
return rst
|
||||||
}
|
}
|
||||||
defer dbo.Close()
|
defer dbo.Close()
|
||||||
|
|
||||||
dml := cfg.MySQL.GetFailListSQL
|
dml := cfg.MySQL.GetFailListSQL
|
||||||
|
if len(params) > 0 {
|
||||||
|
dml = dml + " WHERE "
|
||||||
|
for k, v := range params {
|
||||||
|
trans := false
|
||||||
|
for _, p := range cfg.MySQL.GetFailListParams {
|
||||||
|
if k == p.Param {
|
||||||
|
dml = dml + fmt.Sprintf("%s='%s' AND ", p.Column, v)
|
||||||
|
trans = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !trans {
|
||||||
|
dml = dml + fmt.Sprintf("%s='%s' AND ", k, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dml = strings.TrimSuffix(dml, " AND ")
|
||||||
|
|
||||||
qry, err := dbo.Query(dml)
|
qry, err := dbo.Query(dml)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
rst["Result"] = "NG"
|
rst["Result"] = "NG"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user