Moritz Schmidt 9 rokov pred
rodič
commit
146c55e9f4
1 zmenil súbory, kde vykonal 107 pridanie a 1 odobranie
  1. 107 1
      databaseutils.go

+ 107 - 1
databaseutils.go

@@ -4,6 +4,7 @@ import (
   "database/sql"
   _ "github.com/go-sql-driver/mysql"
   "errors"
+  "fmt"
 )
 
 var (
@@ -118,4 +119,109 @@ func (dbUtil DBUtils) GetRow(options ...string) ([]string, error) {
   return results, nil
 }
 
-//TODO GetRows
+// GetRows(what, from, where, wherevalue)
+func (dbUtil DBUtils) GetRows(options ...string) ([][]string, error) { // TODO umschreiben
+  var err error
+  var rows *sql.Rows // TODO fix this weird bug
+
+  if len(options) > 3 { // with or without where
+    rows, err = dbUtil.Handle.Query("SELECT " + options[0] + " FROM " + options[1] + " WHERE " + options[2] + " = \"" + options[3] + "\"") // TODO Parse?
+  } else {
+    rows, err = dbUtil.Handle.Query("SELECT " + options[0] + " FROM " + options[1]) // TODO Parse?
+  }
+  defer rows.Close()
+
+  if err != nil {
+    panic(err.Error()) // TODO
+  }
+
+  var columns []string
+  columns, err = rows.Columns()
+  if err != nil {
+    fmt.Println(err.Error())
+  }
+
+  colNum := len(columns)
+  all := [][]string{}
+
+  for rows.Next() {
+    vh := make([]string, len(columns))
+
+    cols := make([]interface{}, colNum)
+    for i := 0; i < colNum; i++ {
+        cols[i] = &vh[i]
+    }
+
+    err = rows.Scan(cols...)
+    if err != nil {
+      fmt.Println(err.Error())
+    }
+
+    all = append(all, vh)
+  }
+
+  return all, err
+}
+
+// UpdateRows(what, where, whereval, []key=>val udpate vals)
+func (dbUtil DBUtils) UpdateRow(what string, where string, whereVal string, colsVals [][]string) error {
+  query := "UPDATE `" + what + "` " // begin sql query
+
+  for i, x := range colsVals { // append keys/values to update
+    fmt.Printf("%#v", x)
+    if (i == 0) && (i == (len(colsVals) - 1)) { // if only one thing to update
+      query += "SET `" + string(colsVals[i][0]) + "` = '" + colsVals[i][1] + "' "
+    } else if (i == 0) { // first, but more coming
+      query += "SET `" + colsVals[i][0] + "` = '" + colsVals[i][1] + "', "
+    } else if i == (len(colsVals) - 1) && i != 0 { // last one, no ',' at end
+      query += "`" + string(colsVals[i][0]) + "` = '" + colsVals[i][1] + "' "
+    } else if i != 0 { // everything else (in the middle of others)
+      query += "`" + colsVals[i][0] + "` = '" + colsVals[i][1] + "', "
+    }
+  }
+
+  query += "WHERE `" + where + "` = " + whereVal + ";" // finish query
+
+  _, err := dbUtil.Handle.Query(query) // execute query
+  if err != nil { // check if everything went well
+  	fmt.Printf("QUERY AYY: %#v\n", err.Error())
+    return errors.New("Query Failed") // TODO logging system
+  }
+
+  return nil
+}
+
+// InsertRow(what, cols)
+func (dbUtil DBUtils) InsertRow(what string, colsVals [][]string) error {
+  query := "INSERT INTO `" + what + "` (" // begin sql query
+  vals := ") VALUES ("
+
+  for i, x := range colsVals { // append keys/values to update
+    fmt.Printf("%#v", x)
+    if (i == 0) && (i == (len(colsVals) - 1)) { // if only one thing to update
+      query += "`" + string(colsVals[i][0]) + "`"
+      vals +="'" + colsVals[i][1] + "'"
+    } else if (i == 0) { // first, but more coming
+      query += "`" + colsVals[i][0] + "`,"
+      vals += "'" + colsVals[i][1] + "', "
+    } else if i == (len(colsVals) - 1) && i != 0 { // last one, no ',' at end
+      query += "`" + string(colsVals[i][0]) + "`"
+      vals += "'" + colsVals[i][1] + "'"
+    } else if i != 0 { // everything else (in the middle of others)
+      query += "`" + colsVals[i][0] + "`, "
+      vals += "'" + colsVals[i][1] + "', "
+    }
+  }
+
+  query += vals + ");"
+
+  fmt.Println(query)
+
+  _, err := dbUtil.Handle.Query(query) // execute query
+  if err != nil { // check if everything went well
+  	fmt.Printf("QUERY AYY: %#v\n", err.Error())
+    return errors.New("Query Failed") // TODO logging system
+  }
+
+  return err
+}