diff --git a/APIServer.go b/APIServer.go index 7e73ee8..9bfc764 100644 --- a/APIServer.go +++ b/APIServer.go @@ -488,18 +488,18 @@ func handleRacsInbound(w http.ResponseWriter, r *http.Request) { params, err := parseReqParams(r) if err != nil { - logger.Printf("[ERR] %s; %s; %#v; %s\r\n", r.RemoteAddr, r.RequestURI, params, rst["ErrMsg"]) rst["Result"] = "NG" rst["ErrMsg"] = "racs.HandleInbound: " + 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 } if params["USN"] == "" { - logger.Printf("[ERR] %s; %s; %#v; %s\r\n", r.RemoteAddr, r.RequestURI, params, rst["ErrMsg"]) rst["Result"] = "NG" - rst["ErrMsg"] = "racs.HandleInbound: Missing Parameter - USN" + rst["ErrMsg"] = "racs.HandleInbound: Missing Parameter USN" + 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 @@ -535,18 +535,18 @@ func handleRacsOutbound(w http.ResponseWriter, r *http.Request) { params, err := parseReqParams(r) if err != nil { - logger.Printf("[ERR] %s; %s; %#v; %s\r\n", r.RemoteAddr, r.RequestURI, params, rst["ErrMsg"]) rst["Result"] = "NG" rst["ErrMsg"] = "racs.HandleOutbound: " + 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 } if params["USN"] == "" { - logger.Printf("[ERR] %s; %s; %#v; %s\r\n", r.RemoteAddr, r.RequestURI, params, rst["ErrMsg"]) rst["Result"] = "NG" - rst["ErrMsg"] = "racs.HandleInbound: Missing Parameter - USN" + rst["ErrMsg"] = "racs.HandleOutbound: Missing Parameter USN" + 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 diff --git a/racs/racs.go b/racs/racs.go index 24f92e4..d67d1c5 100644 --- a/racs/racs.go +++ b/racs/racs.go @@ -30,12 +30,19 @@ func (r *RACS) Inbound(cfg cnf.Cfg, logger *log.Logger, addr string, uri string, ) dbo, err := sql.Open("mysql", dsn) if err != nil { - logger.Printf("[ERR] %s; %s; %#v; %s\r\n", addr, uri, params, err.Error()) rst["Result"] = "NG" rst["ErrMsg"] = "racs.Inbound: " + err.Error() + logger.Printf("[ERR] %s; %s; %#v; %s\r\n", addr, uri, params, rst["ErrMsg"]) return rst } - dmlInbound := fmt.Sprintf(`INSERT INTO %s (usn,storage,update_time,mark1,mark2,mark3) VALUES ('%s','%s',%s,'%s','%s','%s');`, + dml := fmt.Sprintf(`INSERT INTO %s + (usn,storage,update_time,mark1,mark2,mark3) VALUES ('%s','%s',%s,'%s','%s','%s') + ON DUPLICATE KEY UPDATE + storage = VALUES(storage), + update_time = NOW(), + mark1 = VALUES(mark1), + mark2 = VALUES(mark2), + mark3 = VALUES(mark3);`, cfg.MySQL.StorageTable, params["USN"], "Inbound", @@ -44,11 +51,11 @@ func (r *RACS) Inbound(cfg cnf.Cfg, logger *log.Logger, addr string, uri string, params["MARK2"], params["MARK3"], ) - _, err = dbo.Exec(dmlInbound) + _, err = dbo.Exec(dml) if err != nil { - logger.Printf("[ERR] %s; %s; %#v; %s\r\n", addr, uri, params, err.Error()) rst["Result"] = "NG" rst["ErrMsg"] = "racs.Inbound: " + err.Error() + logger.Printf("[ERR] %s; %s; %#v; %s\r\n", addr, uri, params, rst["ErrMsg"]) return rst } return rst @@ -65,12 +72,19 @@ func (r *RACS) Outbound(cfg cnf.Cfg, logger *log.Logger, addr string, uri string ) dbo, err := sql.Open("mysql", dsn) if err != nil { - logger.Printf("[ERR] %s; %s; %#v; %s\r\n", addr, uri, params, err.Error()) rst["Result"] = "NG" rst["ErrMsg"] = "racs.Outbound: " + err.Error() + logger.Printf("[ERR] %s; %s; %#v; %s\r\n", addr, uri, params, rst["ErrMsg"]) return rst } - dmlOutbound := fmt.Sprintf(`INSERT INTO %s (usn,storage,update_time,mark1,mark2,mark3) VALUES ('%s','%s',%s,'%s','%s','%s');`, + dml := fmt.Sprintf(`INSERT INTO %s + (usn,storage,update_time,mark1,mark2,mark3) VALUES ('%s','%s',%s,'%s','%s','%s') + ON DUPLICATE KEY UPDATE + storage = VALUES(storage), + update_time = NOW(), + mark1 = VALUES(mark1), + mark2 = VALUES(mark2), + mark3 = VALUES(mark3);`, cfg.MySQL.StorageTable, params["USN"], "Outbound", @@ -79,11 +93,11 @@ func (r *RACS) Outbound(cfg cnf.Cfg, logger *log.Logger, addr string, uri string params["MARK2"], params["MARK3"], ) - _, err = dbo.Exec(dmlOutbound) + _, err = dbo.Exec(dml) if err != nil { - logger.Printf("[ERR] %s; %s; %#v; %s\r\n", addr, uri, params, err.Error()) rst["Result"] = "NG" rst["ErrMsg"] = "racs.Outbound: " + err.Error() + logger.Printf("[ERR] %s; %s; %#v; %s\r\n", addr, uri, params, rst["ErrMsg"]) return rst } return rst