Skip to content

Instantly share code, notes, and snippets.

@jmccaffrey42
Created March 6, 2019 18:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jmccaffrey42/e1741eafb8075920307d9999e3f23583 to your computer and use it in GitHub Desktop.
Save jmccaffrey42/e1741eafb8075920307d9999e3f23583 to your computer and use it in GitHub Desktop.
package main
import (
"encoding/json"
"fmt"
"github.com/gorilla/mux"
"github.com/jinzhu/gorm"
"log"
"net/http"
_ "github.com/jinzhu/gorm/dialects/mysql"
_ "github.com/go-sql-driver/mysql"
)
type User struct {
gorm.Model
Username string `json:"username"`
Password string `json:"password,omitempty"`
}
var db *gorm.DB
func migrate() *gorm.DB{
db, err := gorm.Open("mysql", "root:zxasqw12@/gorm_test?charset=utf8&parseTime=true&loc=Local")
if err != nil {
panic(err.Error())
panic("failed to connect database")
} else {
fmt.Println("Successfully connect to database")
}
//defer db.Close()
// Run Migrations
errors := db.AutoMigrate(&User{}).Error
if errors != nil {
log.Println(errors.Error())
}
return db
}
func createUserInDB2(user User) bool {
// Create the USer
err := db.Create(&user).Error
if err != nil {
log.Println(err.Error())
}
// Return True for success
return true
}
func createUser2(w http.ResponseWriter, r *http.Request) {
w.Header().Add("Content-Type", "application/json")
// Parse User Authentification
var user User
_ = json.NewDecoder(r.Body).Decode(&user)
// Create User in Database
if !createUserInDB2(user) {
fmt.Println("Failed to create user in database")
json.NewEncoder(w).Encode("Failed to create user in database")
}
json.NewEncoder(w).Encode(user)
}
func main () {
db = migrate()
router := mux.NewRouter()
// User Authentification Routes
router.HandleFunc("/api/user", createUser2).Methods("POST")
http.Handle("/", router)
log.Fatal(http.ListenAndServe(":8080", nil))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment