1
0
mirror of https://github.com/alm494/sql_proxy.git synced 2026-04-05 11:51:03 +02:00

convertRows moved to convert.go

This commit is contained in:
Almaz Sharipov
2025-02-16 22:44:46 +03:00
parent 3f1096da4f
commit 8a786907bb
2 changed files with 42 additions and 37 deletions

42
src/handlers/convert.go Normal file
View File

@@ -0,0 +1,42 @@
package handlers
import (
"database/sql"
"sql-proxy/src/db"
)
// Converts SQL query result to json
func convertRows(rows *sql.Rows, columns *[]string) (*[]map[string]interface{}, uint32, bool) {
var rowsCount uint32 = 0
colsCount := len(*columns)
tableData := make([]map[string]interface{}, 0)
values := make([]interface{}, colsCount)
valuePtrs := make([]interface{}, colsCount)
exceedsMaxRows := false
for rows.Next() {
for i := range *columns {
valuePtrs[i] = &values[i]
}
rows.Scan(valuePtrs...)
entry := make(map[string]interface{})
for i, col := range *columns {
var v interface{}
val := values[i]
b, ok := val.([]byte)
if ok {
v = string(b)
} else {
v = val
}
entry[col] = v
}
if rowsCount > db.MaxRows {
exceedsMaxRows = true
break
}
tableData = append(tableData, entry)
rowsCount++
}
return &tableData, rowsCount, exceedsMaxRows
}

View File

@@ -1,7 +1,6 @@
package handlers
import (
"database/sql"
"encoding/json"
"net/http"
@@ -87,39 +86,3 @@ func ExecuteQuery(w http.ResponseWriter, r *http.Request) {
http.Error(w, "Invalid SQL query", http.StatusBadRequest)
}
}
// Converts SQL query result to json
func convertRows(rows *sql.Rows, columns *[]string) (*[]map[string]interface{}, uint32, bool) {
var rowsCount uint32 = 0
colsCount := len(*columns)
tableData := make([]map[string]interface{}, 0)
values := make([]interface{}, colsCount)
valuePtrs := make([]interface{}, colsCount)
exceedsMaxRows := false
for rows.Next() {
for i := range *columns {
valuePtrs[i] = &values[i]
}
rows.Scan(valuePtrs...)
entry := make(map[string]interface{})
for i, col := range *columns {
var v interface{}
val := values[i]
b, ok := val.([]byte)
if ok {
v = string(b)
} else {
v = val
}
entry[col] = v
}
if rowsCount > db.MaxRows {
exceedsMaxRows = true
break
}
tableData = append(tableData, entry)
rowsCount++
}
return &tableData, rowsCount, exceedsMaxRows
}