Skip to content

Instantly share code, notes, and snippets.

@pospome
Created December 11, 2017 07:13
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 pospome/1f6d920c71fc49cfbfa4b00ed1bb806b to your computer and use it in GitHub Desktop.
Save pospome/1f6d920c71fc49cfbfa4b00ed1bb806b to your computer and use it in GitHub Desktop.
package handler
import (
"net/http"
"fmt"
"vendor/google.golang.org/appengine"
"vendor/google.golang.org/appengine/log"
"strconv"
"vendor/google.golang.org/appengine/datastore"
)
func Hello(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Hello, world!")
}
func DatastorePut(w http.ResponseWriter, r *http.Request) {
u := &User{
Name: "pospome",
}
c := appengine.NewContext(r)
k := datastore.NewIncompleteKey(c, "User", nil)
if _, err := datastore.Put(c, k, u); err != nil {
log.Debugf(c, "err = %v", err)
fmt.Fprint(w, fmt.Sprintf("err = %v, ", err))
}
fmt.Fprint(w, u.Name.Echo() + ", ")
fmt.Fprint(w, "datastore put")
}
type Name string
func (n Name) Echo() string {
return "name is " + string(n)
}
type User struct {
Name Name
}
func DatastoreGet(w http.ResponseWriter, r *http.Request) {
idStr := r.URL.Query().Get("id")
id, err := strconv.ParseInt(idStr, 10, 64)
if err != nil {
fmt.Fprintf(w, "err = %v, ", err)
return
}
c := appengine.NewContext(r)
k := datastore.NewKey(c, "User", "", id, nil)
u := &User{}
if err := datastore.Get(c, k, u); err != nil {
log.Debugf(c, "err = %v", err)
fmt.Fprintf(w, "err = %v, ", err)
}
fmt.Fprintf(w, "echo = %s, ", u.Name.Echo())
fmt.Fprintf(w, "u = %v", u)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment