package advsql import ( "crypto/sha512" "encoding/hex" "fmt" "testing" _ "github.com/go-sql-driver/mysql" ) type User struct { Name string Hash []byte Salt string } func ScanUser(u *User, scan ScanFunc) error { return scan(&u.Name, &u.Hash, &u.Salt) } func ExecUser(u *User, exec ExecFunc) error { return exec(u.Name, u.Hash, u.Salt) } func UpdateUser(u *User, exec ExecFunc) error { return exec(u.Salt, u.Name) } func TestDB(t *testing.T) { db, err := NewDatabase("192.168.178.2", 3306, "root", "ZAuJsLdPYFSxHdZon7xpMyh5LW7TPhmM", "users") if err != nil { t.Fatal(err) } defer db.Close() insertUser := Insert(db, "INSERT INTO users VALUES (?, ?, ?)", ExecUser) updateUser := Insert(db, "UPDATE users SET salt = ? WHERE name = ?", UpdateUser) getUsers := Query(db, "SELECT * FROM users WHERE name = ?", ScanUser) pw := sha512.Sum512([]byte("weiter")) timon := &User{ Name: "timon", Hash: pw[:], Salt: "salt", } fmt.Println("insert:", insertUser(timon)) timon.Hash = []byte("asd") fmt.Println("update:", updateUser(timon)) for user := range getUsers("tordarus") { fmt.Printf("name: \"%s\" | hash: \"%s\" | salt: \"%s\"\n", user.Name, hex.EncodeToString(user.Hash), user.Salt) } }