|
@@ -4,6 +4,7 @@ import (
|
|
|
"database/sql"
|
|
"database/sql"
|
|
|
_ "github.com/go-sql-driver/mysql"
|
|
_ "github.com/go-sql-driver/mysql"
|
|
|
"errors"
|
|
"errors"
|
|
|
|
|
+ "fmt"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
var (
|
|
var (
|
|
@@ -118,4 +119,109 @@ func (dbUtil DBUtils) GetRow(options ...string) ([]string, error) {
|
|
|
return results, nil
|
|
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
|
|
|
|
|
+}
|