Selaa lähdekoodia

Ch1 pp58-62 inserting users in MySQL. Use the db.sql file.

Frederic G. MARAND 9 vuotta sitten
vanhempi
sitoutus
2e1ad6ebf2

+ 2 - 2
ch1/db.sql

@@ -26,8 +26,8 @@ SET time_zone = "+00:00";
 -- Structure de la table `user`
 --
 
-DROP TABLE IF EXISTS `user`;
-CREATE TABLE IF NOT EXISTS `user` (
+DROP TABLE IF EXISTS `users`;
+CREATE TABLE IF NOT EXISTS `users` (
   `user_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
   `user_nickname` varchar(32) NOT NULL,
   `user_first` varchar(32) NOT NULL,

+ 0 - 0
ch1/ex1_helloworld.go → ch1/ex1/ex1_helloworld.go


+ 0 - 0
ch1/ex2_hellogorilla.go → ch1/ex2/ex2_hellogorilla.go


+ 0 - 0
ch1/ex3_hellodrone.go → ch1/ex3/ex3_hellodrone.go


+ 59 - 0
ch1/ex4/ex4_user_create.go

@@ -0,0 +1,59 @@
+package main
+
+import (
+	"database/sql"
+	_ "github.com/go-sql-driver/mysql"
+	"encoding/json"
+	"fmt"
+	"github.com/gorilla/mux"
+	"net/http"
+)
+
+type API struct {
+	Message string "json:message"
+}
+
+type User struct {
+	ID int "json:id"
+	Name string "json:username"
+	Email string "json:email"
+	First string "json:first"
+	Last string "json:last"
+}
+
+var database *sql.DB
+func CreateUser(w http.ResponseWriter, r *http.Request) {
+	NewUser := User{}
+	NewUser.Name = r.FormValue("user")
+	NewUser.Email = r.FormValue("email")
+	NewUser.First = r.FormValue("first")
+	NewUser.Last = r.FormValue("last")
+	output, err := json.Marshal(NewUser)
+	if err != nil {
+		fmt.Println("Something went wrong with Marshal", err)
+	}
+	fmt.Println(string(output))
+
+	sql := "INSERT INTO users SET user_nickname='" + NewUser.Name + "'" + ", user_first = '" + NewUser.First + "'" + ", user_last = '" + NewUser.Last + "'" + ", user_email = '" + NewUser.Email + "';"
+	q, err := database.Exec(sql)
+	if err != nil {
+		fmt.Println("Something went wrong with INSERT", err)
+	}
+	last, err := q.LastInsertId()
+	affected, err := q.RowsAffected()
+	fmt.Printf("Last Id: %d, Affected rows: %d\n", last, affected)
+}
+
+func main() {
+	db, err := sql.Open("mysql", "goroot:gopass@/go_sn")
+	if err != nil {
+		fmt.Println("Something went wrong with sql.Open", err)
+		return
+	}
+	database = db
+
+	routes := mux.NewRouter()
+	routes.HandleFunc("/api/user/create", CreateUser).Methods("GET")
+	http.Handle("/", routes)
+	http.ListenAndServe(":8080", nil)
+}

PANIC: session(release): write data/sessions/5/5/5582f880b9e222bd: no space left on device

PANIC

session(release): write data/sessions/5/5/5582f880b9e222bd: no space left on device
/my/cache/.heroku/go/go-path/pkg/mod/github.com/go-macaron/session@v1.0.3/session.go:204 (0xb13e07)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/context.go:80 (0x967b75)
/my/cache/.heroku/go/go-path/pkg/mod/github.com/go-macaron/inject@v0.0.0-20200308113650-138e5925c53b/inject.go:157 (0x9512ee)
/my/cache/.heroku/go/go-path/pkg/mod/github.com/go-macaron/inject@v0.0.0-20200308113650-138e5925c53b/inject.go:135 (0x951205)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/context.go:124 (0x967cc4)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/context.go:114 (0x967bf6)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/recovery.go:161 (0x15baec4)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/logger.go:40 (0x96b257)
/my/cache/.heroku/go/go-path/pkg/mod/github.com/go-macaron/inject@v0.0.0-20200308113650-138e5925c53b/inject.go:157 (0x9512ee)
/my/cache/.heroku/go/go-path/pkg/mod/github.com/go-macaron/inject@v0.0.0-20200308113650-138e5925c53b/inject.go:135 (0x951205)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/context.go:124 (0x967cc4)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/router.go:187 (0x972959)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/router.go:304 (0x973a01)
/my/cache/.heroku/go/go-path/pkg/mod/gopkg.in/macaron.v1@v1.5.1/macaron.go:218 (0x96c572)
/my/cache/.heroku/go/go1.26.3/go/src/net/http/server.go:3311 (0x85a5cd)
/my/cache/.heroku/go/go1.26.3/go/src/net/http/server.go:2073 (0x837f6f)
/my/cache/.heroku/go/go1.26.3/go/src/runtime/asm_amd64.s:1771 (0x493380)