152 lines
3.0 KiB
Go
152 lines
3.0 KiB
Go
package main
|
|
|
|
import (
|
|
"database/sql"
|
|
"fmt"
|
|
|
|
_ "github.com/go-sql-driver/mysql"
|
|
)
|
|
|
|
func connectMysql() (*sql.DB, error) {
|
|
db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/golang_user")
|
|
|
|
if err != nil {
|
|
panic(err.Error())
|
|
}
|
|
return db, nil
|
|
}
|
|
|
|
func addUser(_login string, _password string, _userDescription string, _points int) {
|
|
//do rejestracji uzytkownika
|
|
// Insert do bazy Mysql Nowego użytkownika
|
|
|
|
db, err := connectMysql()
|
|
|
|
if err != nil {
|
|
panic(err.Error())
|
|
}
|
|
|
|
queryInsert := fmt.Sprintf(`INSERT INTO users (
|
|
login,
|
|
password,
|
|
userDescription,
|
|
points
|
|
)VALUES (
|
|
"%s",
|
|
"%s",
|
|
"%s",
|
|
"%d"
|
|
)`, _login, _password, _userDescription, _points)
|
|
|
|
fmt.Printf(queryInsert)
|
|
insert, err := db.Query(queryInsert)
|
|
if err != nil {
|
|
panic(err.Error())
|
|
}
|
|
fmt.Println(insert)
|
|
|
|
}
|
|
|
|
func getAllUsers() []User {
|
|
//pobiera wszystkich uzytkownikow - do wysiwetlenie na front
|
|
/* --------------------- users -----------------------
|
|
userId int `json:"id"` // do pobierania z GET
|
|
login string `json:"login"`
|
|
password string `json:"password"`
|
|
userDescription string `json:"userDescription"`
|
|
points int `json:points`
|
|
*/
|
|
allUsers := []User{}
|
|
db, err := connectMysql()
|
|
|
|
result, err := db.Query("SELECT * FROM users")
|
|
if err != nil {
|
|
panic(err.Error())
|
|
}
|
|
|
|
for result.Next() {
|
|
var user User
|
|
|
|
err = result.Scan(&user.userId, &user.login, &user.password, &user.userDescription, &user.points)
|
|
if err != nil {
|
|
panic(err.Error())
|
|
}
|
|
|
|
allUsers = append(allUsers, user)
|
|
}
|
|
|
|
return allUsers
|
|
|
|
}
|
|
|
|
func checkLoginExists(_login string) bool {
|
|
//sprawdza czy dany login jest juz w bazie, przy rejestracji przydatne
|
|
db, err := connectMysql()
|
|
|
|
querySelect := fmt.Sprintf(`SELECT login FROM users WHERE login='%s' ;`, _login)
|
|
|
|
result, err := db.Query(querySelect)
|
|
if err != nil {
|
|
panic(err.Error())
|
|
}
|
|
|
|
for result.Next() {
|
|
var userLogin string
|
|
|
|
err = result.Scan(&userLogin)
|
|
if err != nil {
|
|
panic(err.Error())
|
|
}
|
|
|
|
if userLogin != "" {
|
|
return true
|
|
}
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
func loginUser(_login string, _password string) bool {
|
|
//do logowanie w bazie
|
|
db, err := connectMysql()
|
|
querySelect := fmt.Sprintf(`SELECT login FROM users WHERE login='%s' AND password='%s' ;`, _login, _password)
|
|
|
|
result, err := db.Query(querySelect)
|
|
if err != nil {
|
|
panic(err.Error())
|
|
}
|
|
|
|
for result.Next() {
|
|
var userLogin string
|
|
|
|
err = result.Scan(&userLogin)
|
|
if err != nil {
|
|
panic(err.Error())
|
|
}
|
|
|
|
if userLogin != "" {
|
|
return true
|
|
}
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
func main() {
|
|
fmt.Println("Go Mysql Tutorial")
|
|
// db, err := connectMysql()
|
|
|
|
// // db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/golang_user")
|
|
// fmt.Println(reflect.TypeOf(db))
|
|
// fmt.Println(reflect.TypeOf(err))
|
|
|
|
// addUser("login10", "password", "userDescription", 123)
|
|
// allUsers := getAllUsers()
|
|
// fmt.Println(allUsers)
|
|
wynik := checkLoginExists("_login")
|
|
fmt.Printf("%v", wynik)
|
|
wynik = loginUser("_login", "_password3")
|
|
fmt.Printf("%v", wynik)
|
|
|
|
}
|