Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "net/http"
- db "./database_sql"
- router "./router"
- )
- func main() {
- db.Init_SQL();
- router.Init_routes()
- http.ListenAndServe(":8080", router.GetRouter())
- }
- package database_sql
- import (
- "fmt"
- "database/sql"
- _ "github.com/go-sql-driver/mysql"
- )
- var DB *sql.DB // global variable to share it between main and the HTTP handler
- //var dbi *databaseinfos
- func Init_SQL() {
- dbi := databaseinfos{
- user: "root",
- password: "root",
- name: "captainsam",
- address: "localhost",
- port: "3306",
- url: ""}
- dbi.url = (dbi.user + ":" + dbi.password + "@tcp(" + dbi.address + ":" + dbi.port + ")/" + dbi.name)
- db_init_var, err := sql.Open("mysql", dbi.url)
- if err != nil {
- fmt.Println("Error on initializing database connection: %s", err.Error())
- }
- err = db_init_var.Ping()
- if err != nil {
- fmt.Println("Error on opening database connection: %s", err.Error())
- }
- // Here, as you can test, my variable is initialized
- if err == nil {
- DB = db_init_var
- if DB == nil {
- fmt.Println("NIL DB !!")
- }
- if db_init_var == nil {
- fmt.Println("NIL db_init_var !!")
- }
- fmt.Println(dbi.url)
- }
- }
- package database_sql
- import (
- "encoding/json"
- "fmt"
- "net/http"
- m "models"
- )
- func CanLogin(user m.User) (bool, m.User, m.StatusBack) {
- // Prepare statement for reading data
- stmtOut, err := DB.Prepare("SELECT username, password, token FROM users WHERE username = ? AND password = ?")
- if err != nil {
- return false, user, m.StatusBack{ToString: err.Error(), IdStatus: http.StatusInternalServerError}
- }
- defer stmtOut.Close()
- // Query the user
- err = stmtOut.QueryRow(user.Username, user.Password).Scan(&user.Username, &user.Password, &user.UUID) // WHERE user is registered
- if err != nil {
- return false, user, m.StatusBack{ToString: "User not found.", IdStatus: http.StatusNotFound}
- } else {
- j, err := json.Marshal(user)
- if err == nil {
- return true, user, m.StatusBack{ToString: string(j), IdStatus: http.StatusOK}
- } else {
- return false, user, m.StatusBack{ToString: err.Error(), IdStatus: http.StatusInternalServerError}
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement