d
This commit is contained in:
@@ -41,9 +41,10 @@ var (
|
|||||||
CustomXormUpdateDataUri = config.UriPrefix + "/databaseManagement/{apiVersion}/update/{databaseName}/{tableName}"
|
CustomXormUpdateDataUri = config.UriPrefix + "/databaseManagement/{apiVersion}/update/{databaseName}/{tableName}"
|
||||||
CustomXormDeleteDataUri = config.UriPrefix + "/databaseManagement/{apiVersion}/delete/{databaseName}/{tableName}"
|
CustomXormDeleteDataUri = config.UriPrefix + "/databaseManagement/{apiVersion}/delete/{databaseName}/{tableName}"
|
||||||
|
|
||||||
XormCommonUri = config.DefaultUriPrefix + "/databaseManagement/{apiVersion}/{databaseName}/{tableName}" // for internal
|
XormCommonUri = config.DefaultUriPrefix + "/databaseManagement/{apiVersion}/{databaseName}/{tableName}" // for internal
|
||||||
XormExtDataUri = config.DefaultUriPrefix + "/dataManagement/{apiVersion}/{dataStorage}/{dataObject}" // for external
|
XormDatabaseUri = config.DefaultUriPrefix + "/database/{apiVersion}/{databaseName}/{tableName}" // for crontask
|
||||||
XormDataSQLUri = config.DefaultUriPrefix + "/dataManagement/{apiVersion}/{dataStorage}/{dataObject}" // for external
|
XormExtDataUri = config.DefaultUriPrefix + "/dataManagement/{apiVersion}/{dataStorage}/{dataObject}" // for external
|
||||||
|
XormDataSQLUri = config.DefaultUriPrefix + "/dataManagement/{apiVersion}/{dataStorage}/{dataObject}" // for external
|
||||||
|
|
||||||
CustomXormCommonUri = config.UriPrefix + "/databaseManagement/{apiVersion}/{databaseName}/{tableName}" // for internal
|
CustomXormCommonUri = config.UriPrefix + "/databaseManagement/{apiVersion}/{databaseName}/{tableName}" // for internal
|
||||||
CustomXormExtDataUri = config.UriPrefix + "/dataManagement/{apiVersion}/{dataStorage}/{dataObject}" // for external
|
CustomXormExtDataUri = config.UriPrefix + "/dataManagement/{apiVersion}/{dataStorage}/{dataObject}" // for external
|
||||||
@@ -733,3 +734,173 @@ func DbStop(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
services.ResponseWithJson(w, 200, rse)
|
services.ResponseWithJson(w, 200, rse)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// xorm Get data from database
|
||||||
|
func TaskDatabaseGetData(w http.ResponseWriter, r *http.Request) {
|
||||||
|
log.Debug("DatabaseGetData processing... ")
|
||||||
|
|
||||||
|
var sql []string
|
||||||
|
var err error
|
||||||
|
|
||||||
|
vars := mux.Vars(r)
|
||||||
|
tblName := vars["tableName"]
|
||||||
|
sql = GetUriSQLArray(r)
|
||||||
|
// select as must, todo ...
|
||||||
|
|
||||||
|
if sql == nil {
|
||||||
|
wc := services.GetUriWhereString(r)
|
||||||
|
if wc == "" {
|
||||||
|
sql = append(sql, fmt.Sprintf("select * from %s", tblName))
|
||||||
|
} else {
|
||||||
|
sql = append(sql, fmt.Sprintf("select * from %s where %s", tblName, wc))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ls := services.GetUriPageLimitString(r)
|
||||||
|
|
||||||
|
// data := make([]map[string]interface{}, 0)
|
||||||
|
// xormResponse := make([]map[string]interface{}, len(sql))
|
||||||
|
var xormResponse XormResponse
|
||||||
|
data := make([]map[string]interface{}, 0)
|
||||||
|
for i, s := range sql {
|
||||||
|
log.Tracef("SQL[%d]: %s", i, sql[i])
|
||||||
|
|
||||||
|
rows := make([]map[string]interface{}, 0)
|
||||||
|
mapRows := make(map[string]interface{})
|
||||||
|
|
||||||
|
if s != "" {
|
||||||
|
// err = XEngine.SQL(s).Find(&rows)
|
||||||
|
if IsQuerySQL(s) == false {
|
||||||
|
services.ResponseNotAcceptable406QuerySQLError(w)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
querySQL := s
|
||||||
|
if i == (len(sql) - 1) {
|
||||||
|
querySQL = querySQL + " " + ls
|
||||||
|
}
|
||||||
|
log.Debug("querySQL:", querySQL)
|
||||||
|
rows, err = DbClient.XEngine.QueryInterface(querySQL)
|
||||||
|
if err != nil {
|
||||||
|
log.Error("SQL failed:", err)
|
||||||
|
services.ResponseInternalServerError500DatabaseOperationFailed(w)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
tableName := GetTableName(s)
|
||||||
|
log.Debugf("s:%s tableName:%s", s, tableName)
|
||||||
|
mapRows[tableName] = rows
|
||||||
|
data = append(data, mapRows)
|
||||||
|
log.Trace("data:", data)
|
||||||
|
}
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
xormResponse.Data = data
|
||||||
|
|
||||||
|
services.ResponseWithJson(w, http.StatusOK, xormResponse)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TaskDatabaseInsertData(w http.ResponseWriter, r *http.Request) {
|
||||||
|
log.Debug("DatabaseInsertData processing... ")
|
||||||
|
|
||||||
|
body, err := io.ReadAll(io.LimitReader(r.Body, global.RequestBodyMaxLen)) //io.LimitReader限制大小
|
||||||
|
if err != nil {
|
||||||
|
log.Error("io.ReadAll failed:", err)
|
||||||
|
services.ResponseNotFound404UriNotExist(w, r)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
vars := mux.Vars(r)
|
||||||
|
tableName := vars["tableName"]
|
||||||
|
log.Debug("Request body:", string(body), "tableName:", tableName)
|
||||||
|
insertData := make(map[string]interface{})
|
||||||
|
_ = json.Unmarshal(body, &insertData)
|
||||||
|
|
||||||
|
tn, sql := dborm.ConstructInsertSQL(tableName, insertData)
|
||||||
|
log.Tracef("tn: %s sql :%s", tn, sql)
|
||||||
|
xSession := DbClient.XEngine.NewSession()
|
||||||
|
defer xSession.Close()
|
||||||
|
var affected int64
|
||||||
|
for _, s := range sql {
|
||||||
|
res, err := xSession.Exec(s)
|
||||||
|
if err != nil {
|
||||||
|
log.Error("Insert failed:", err)
|
||||||
|
services.ResponseInternalServerError500DatabaseOperationFailed(w)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
n, _ := res.RowsAffected()
|
||||||
|
affected = affected + n
|
||||||
|
}
|
||||||
|
xSession.Commit()
|
||||||
|
// affected, err := InsertDataWithJson(insertData)
|
||||||
|
mapRow := make(map[string]interface{})
|
||||||
|
row := map[string]interface{}{"affectedRows": affected}
|
||||||
|
mapRow[tn] = row
|
||||||
|
// xormResponse.Data = mapRow
|
||||||
|
services.ResponseWithJson(w, http.StatusOK, mapRow)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TaskDatabaseUpdateData(w http.ResponseWriter, r *http.Request) {
|
||||||
|
log.Debug("DatabaseUpdateData processing... ")
|
||||||
|
|
||||||
|
body, err := io.ReadAll(io.LimitReader(r.Body, global.RequestBodyMaxLen))
|
||||||
|
if err != nil {
|
||||||
|
log.Error("io.ReadAll is failed:", err)
|
||||||
|
services.ResponseNotFound404UriNotExist(w, r)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
vars := mux.Vars(r)
|
||||||
|
tblName := vars["tableName"]
|
||||||
|
wc := services.GetUriWhereString(r)
|
||||||
|
|
||||||
|
log.Debug("Request body:", string(body), "Table name:", tblName, "wc:", wc)
|
||||||
|
updateData := make(map[string]interface{})
|
||||||
|
_ = json.Unmarshal(body, &updateData)
|
||||||
|
|
||||||
|
tn, sql := dborm.ConstructUpdateSQL(tblName, updateData, wc)
|
||||||
|
log.Tracef("tn: %s sql :%s", tn, sql)
|
||||||
|
xSession := DbClient.XEngine.NewSession()
|
||||||
|
defer xSession.Close()
|
||||||
|
var affected int64
|
||||||
|
for _, s := range sql {
|
||||||
|
res, err := xSession.Exec(s)
|
||||||
|
if err != nil {
|
||||||
|
log.Error("Update failed:", err)
|
||||||
|
services.ResponseInternalServerError500DatabaseOperationFailed(w)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
n, _ := res.RowsAffected()
|
||||||
|
affected = affected + n
|
||||||
|
}
|
||||||
|
xSession.Commit()
|
||||||
|
mapRow := make(map[string]interface{})
|
||||||
|
row := map[string]interface{}{"affectedRows": affected}
|
||||||
|
mapRow[tn] = row
|
||||||
|
services.ResponseWithJson(w, http.StatusOK, mapRow)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TaskDatabaseDeleteData(w http.ResponseWriter, r *http.Request) {
|
||||||
|
log.Debug("DatabaseDeleteData processing... ")
|
||||||
|
|
||||||
|
vars := mux.Vars(r)
|
||||||
|
tblName := vars["tableName"]
|
||||||
|
wc := services.GetUriWhereString(r)
|
||||||
|
|
||||||
|
log.Debug("Table name:", tblName, "wc:", wc)
|
||||||
|
|
||||||
|
sql := dborm.ConstructDeleteSQL(tblName, wc)
|
||||||
|
xSession := DbClient.XEngine.NewSession()
|
||||||
|
defer xSession.Close()
|
||||||
|
res, err := xSession.Exec(sql)
|
||||||
|
if err != nil {
|
||||||
|
log.Error("Update failed, err:", err)
|
||||||
|
services.ResponseInternalServerError500DatabaseOperationFailed(w)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
affected, _ := res.RowsAffected()
|
||||||
|
xSession.Commit()
|
||||||
|
mapRow := make(map[string]interface{})
|
||||||
|
row := map[string]interface{}{"affectedRows": affected}
|
||||||
|
mapRow["data"] = row
|
||||||
|
services.ResponseWithJson(w, http.StatusOK, mapRow)
|
||||||
|
}
|
||||||
|
|||||||
@@ -76,6 +76,11 @@ func init() {
|
|||||||
Register("PUT", dbrest.XormCommonUri, dbrest.DatabaseUpdateData, nil)
|
Register("PUT", dbrest.XormCommonUri, dbrest.DatabaseUpdateData, nil)
|
||||||
Register("DELETE", dbrest.XormCommonUri, dbrest.DatabaseDeleteData, nil)
|
Register("DELETE", dbrest.XormCommonUri, dbrest.DatabaseDeleteData, nil)
|
||||||
|
|
||||||
|
Register("GET", dbrest.XormDatabaseUri, dbrest.TaskDatabaseGetData, nil)
|
||||||
|
Register("POST", dbrest.XormDatabaseUri, dbrest.TaskDatabaseInsertData, nil)
|
||||||
|
Register("PUT", dbrest.XormDatabaseUri, dbrest.TaskDatabaseUpdateData, nil)
|
||||||
|
Register("DELETE", dbrest.XormDatabaseUri, dbrest.TaskDatabaseDeleteData, nil)
|
||||||
|
|
||||||
Register("GET", dbrest.CustomXormCommonUri, dbrest.DatabaseGetData, nil)
|
Register("GET", dbrest.CustomXormCommonUri, dbrest.DatabaseGetData, nil)
|
||||||
Register("POST", dbrest.CustomXormCommonUri, dbrest.DatabaseInsertData, nil)
|
Register("POST", dbrest.CustomXormCommonUri, dbrest.DatabaseInsertData, nil)
|
||||||
Register("PUT", dbrest.CustomXormCommonUri, dbrest.DatabaseUpdateData, nil)
|
Register("PUT", dbrest.CustomXormCommonUri, dbrest.DatabaseUpdateData, nil)
|
||||||
|
|||||||
Reference in New Issue
Block a user