lhs 5 rokov pred
rodič
commit
bb23cd1da0
2 zmenil súbory, kde vykonal 39 pridanie a 38 odobranie
  1. 33 0
      repository/postgres/init.go
  2. 6 38
      repository/postgres/test.go

+ 33 - 0
repository/postgres/init.go

@@ -71,3 +71,36 @@ func isRecordNotFound(err error) bool {
 		return false
 	}
 }
+func PgSqlRowsToInerface(rows pgx.Rows) (tableData []interface{}) {
+	fieldDescriptions := rows.FieldDescriptions()
+	var columns []string
+	for _, col := range fieldDescriptions {
+		columns = append(columns, string(col.Name))
+	}
+
+	count := len(columns)
+	//tableData := make([]map[string]interface{}, 0)
+	values := make([]interface{}, count)
+	valuePtrs := make([]interface{}, count)
+	for rows.Next() {
+		for i := 0; i < count; i++ {
+			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
+		}
+		tableData = append(tableData, entry)
+	}
+
+	return
+}

+ 6 - 38
repository/postgres/test.go

@@ -1,7 +1,6 @@
 package postgres
 
 import (
-	"encoding/json"
 	"fmt"
 	"gframe/errors"
 	"github.com/jackc/pgx/v4"
@@ -49,30 +48,6 @@ type UserListInfo struct {
 	Name string
 }
 
-func (t Test) UserList1() (rs []interface{}, err error) {
-	//var id int32
-	//var name string
-	//var ct time.Time
-	var one interface{}
-	var rs_ struct {
-		Rs []interface{}
-	}
-	//var a interface{}
-
-	sql := `select id,name from func_userlist_query();`
-	_, err = t.writeDB().QueryFunc(t.ctx(), sql, []interface{}{}, []interface{}{&one}, func(rows pgx.QueryFuncRow) error {
-
-		rs_.Rs = append(rs_.Rs, one)
-		return nil
-	})
-	if err != nil {
-		fmt.Printf("QueryFunc error: %v", err)
-	}
-
-	data, err := json.Marshal(rs_)
-	println(string(data))
-	return
-}
 func (t Test) UserList2() (rs []interface{}, err error) {
 	//var id int32
 	//var name string
@@ -80,7 +55,7 @@ func (t Test) UserList2() (rs []interface{}, err error) {
 	usone := UserListInfo{}
 
 	sql := `select id,name from func_userlist_query();`
-	_, err = t.writeDB().QueryFunc(t.ctx(), sql, []interface{}{}, []interface{}{&usone.Id, &usone.Name}, func(pgx.QueryFuncRow) error {
+	_, err = t.writeDB().QueryFunc(t.ctx(), sql, []interface{}{}, []interface{}{&usone.Id, &usone.Name}, func(rows pgx.QueryFuncRow) error {
 
 		fmt.Printf("%v\n", usone)
 		rs = append(rs, usone)
@@ -92,22 +67,15 @@ func (t Test) UserList2() (rs []interface{}, err error) {
 	}
 	return
 }
-func (t Test) UserList() (rs []interface{}, err error) {
-	var id int
-	var name string
-	//var ct time.Time
-	//usone := UserListInfo{}
 
-	sql := `select id,name from func_userlist_query();`
-	_, err = t.writeDB().QueryFunc(t.ctx(), sql, []interface{}{}, []interface{}{&id, &name}, func(pgx.QueryFuncRow) error {
-		usone := UserListInfo{id, name}
-		fmt.Printf("%v\n", usone)
-		rs = append(rs, usone)
+func (t Test) UserList() (rs []interface{}, err error) {
 
-		return nil
-	})
+	sql := `select * from func_userlist_query();`
+	rows, err := t.writeDB().Query(t.ctx(), sql)
 	if err != nil {
 		fmt.Printf("QueryFunc error: %v", err)
 	}
+	rs = PgSqlRowsToInerface(rows)
+
 	return
 }