Sylvain RECLUS пре 4 година
родитељ
комит
0f6265677e
4 измењених фајлова са 128 додато и 0 уклоњено
  1. 5 0
      mysqltojson/go.mod
  2. 2 0
      mysqltojson/go.sum
  3. 90 0
      mysqltojson/sql/connect.go
  4. 31 0
      mysqltojson/sql/sql_test.go

+ 5 - 0
mysqltojson/go.mod

@@ -0,0 +1,5 @@
+module mysqltojson
+
+go 1.15
+
+require github.com/go-sql-driver/mysql v1.5.0

+ 2 - 0
mysqltojson/go.sum

@@ -0,0 +1,2 @@
+github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs=
+github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=

+ 90 - 0
mysqltojson/sql/connect.go

@@ -0,0 +1,90 @@
+package sql
+
+import (
+	"database/sql"
+	"errors"
+
+	// _ "github.com/go-sql-driver/mysql"
+	_ "github.com/go-sql-driver/mysql"
+)
+
+//SQL ...
+type SQL struct {
+	db  *sql.DB
+	err error
+}
+
+// NewSQL ...
+func NewSQL(server, login, mdp, base string) *SQL {
+	db, err := Connect(server, login, mdp, base)
+	if err != nil {
+		panic(err.Error())
+	}
+	s := new(SQL)
+	s.db = db
+	s.err = err
+	return s
+}
+
+func Connect(server, login, mdp, base string) (*sql.DB, error) {
+	db, err := sql.Open("mysql", login+":"+mdp+"@tcp("+server+")/"+base)
+	return db, err
+}
+
+/* INSERT
+return nombre d'insert
+*/
+func (s *SQL) Insert(table string, cols []string, values [][]string) error {
+	if cols != nil {
+		for _, v := range values {
+			if len(v) != len(cols) {
+				return errors.New("") // Il n'y a pas le meme nombre de cols dans une ou plusieurs ligne de values
+			}
+		}
+	}
+	flgA := 0
+	flgB := 0
+	lines := ""
+	for _, value := range values {
+		if flgB != 0 {
+			lines += ", "
+		}
+		lines += "("
+		for i := 0; i < len(value); i++ {
+			if flgA != 0 {
+				lines += ", "
+			}
+			if value[i] != "" {
+				lines += "'" + value[i] + "'"
+			} else {
+				lines += "null"
+			}
+			flgA = 1
+		}
+		lines += ")"
+		flgB = 1
+		flgA = 0
+	}
+	insert, err := s.db.Query("INSERT INTO " + table + " VALUES " + lines + ";")
+	if err != nil || insert.Err() != nil {
+		return errors.New("") // Error syntax sql
+	}
+	defer insert.Close()
+	return nil
+}
+
+func (s *SQL) Delete(table string, conds []string) error {
+	if conds != nil {
+		return errors.New("") // Aucune condition
+	}
+
+	delete, err := s.db.Query("DELETE FROM " + table + " WHERE " + lines)
+	if err != nil || delete.Err() != nil {
+		return errors.New("") // Error syntax
+	}
+
+}
+
+func (s *SQL) Close() {
+
+}

+ 31 - 0
mysqltojson/sql/sql_test.go

@@ -0,0 +1,31 @@
+package sql
+
+import "testing"
+
+// TestConnect ...
+func TestConnect(t *testing.T) {
+	db := NewSQL()
+	var err = db.connectDb("sylvrec.com:3306", "test", "test", "test")
+	if err != nil {
+		t.Errorf("Expected err=nil, %#v", err)
+		return
+	}
+	db.Close()
+}
+
+func TestInsert(t *testing.T) {
+	db := NewSQL()
+	var err = db.connectDb("sylvrec.com:3306", "test", "test", "test")
+	if err != nil {
+		t.Errorf("Expected err=nil, %#v", err)
+		return
+	}
+	var values [][]string
+	values = append(values, []string{"1", "john", "doe"})
+	db.insertDb("test", nil, values)
+	// if errs != nil {
+	// 	t.Errorf("Expected err=nil, %#v", err)
+	// 	return
+	// }
+	db.Close()
+}