Created
September 14, 2015 21:54
-
-
Save hectorgool/482494d67eed6443b12d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* | |
| CREATE TABLE users ( | |
| user_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, | |
| user_nickname VARCHAR(32) NOT NULL, | |
| user_first VARCHAR(32) NOT NULL, | |
| user_last VARCHAR(32) NOT NULL, | |
| user_email VARCHAR(128) NOT NULL, | |
| PRIMARY KEY (user_id), | |
| UNIQUE INDEX user_nickname (user_nickname) | |
| ) | |
| */ | |
| /* | |
| curl http://localhost:8000/api/users --data "name=nkozyra&email=nkozyra@gmail.com&first=nathan&last=nathan" | |
| */ | |
| package main | |
| import ( | |
| "database/sql" | |
| "encoding/json" | |
| "fmt" | |
| _ "github.com/go-sql-driver/mysql" | |
| "github.com/gorilla/mux" | |
| //"log" | |
| "net/http" | |
| ) | |
| var database *sql.DB | |
| type Users struct { | |
| Users []User `json:"users"` | |
| } | |
| type User struct { | |
| ID int "json:id" | |
| Name string "json:username" | |
| Email string "json:email" | |
| First string "json:first" | |
| Last string "json:last" | |
| } | |
| func UserCreate(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) | |
| fmt.Println(string(output)) | |
| if err != nil { | |
| fmt.Println("Something went wrong!") | |
| } | |
| 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(err) | |
| } | |
| fmt.Println(q) | |
| } | |
| func UsersRetrieve(w http.ResponseWriter, r *http.Request) { | |
| w.Header().Set("Pragma", "no-cache") | |
| rows, _ := database.Query("SELECT * FROM users LIMIT 10") | |
| Response := Users{} | |
| for rows.Next() { | |
| user := User{} | |
| rows.Scan( &user.ID, &user.Name, &user.First, &user.Last, &user.Email ) | |
| Response.Users = append(Response.Users, user) | |
| } | |
| output, _ := json.Marshal(Response) | |
| fmt.Fprintln(w, string(output)) | |
| } | |
| func main() { | |
| //db, err := sql.Open("mysql", "root@/social_network") | |
| db, err := sql.Open("mysql", "hector:asdf@/go") | |
| if err != nil { | |
| fmt.Println(err) | |
| } | |
| database = db | |
| routes := mux.NewRouter() | |
| routes.HandleFunc("/api/users", UserCreate).Methods("POST") | |
| routes.HandleFunc("/api/users", UsersRetrieve).Methods("GET") | |
| http.Handle("/", routes) | |
| http.ListenAndServe(":8000", nil) | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment