func handlerInsert(w http.ResponseWriter, r *http.Request) { ctx := appengine.NewContext(r) client := &http.Client{ Transport: &oauth2.Transport{ Source: google.AppEngineTokenSource(ctx, bigquery.BigqueryScope), Base: &urlfetch.Transport{Context: ctx}, }, } bq, err := bigquery.New(client) if err != nil { fmt.Errorf("%v", err) } key := datastore.Key{} c := Container2{ Hoge: Hoge{Name: "hoge", Age: 28}, Key: &key, } jsonValue, err := ironmole.BuildJsonValue(&c) if err != nil { log.Errorf(ctx, "%v", err) http.Error(w, err.Error(), http.StatusInternalServerError) return } res, err := ironmole.Insert(bq, "cp300demo1", "go2bq", "Container2", jsonValue) if err != nil { log.Errorf(ctx, "%v", err) http.Error(w, err.Error(), http.StatusInternalServerError) return } for _, insertError := range res.InsertErrors { for _, err := range insertError.Errors { log.Errorf(ctx, "Insert Error = %v", err) } } }
func handlerInsertMoge(w http.ResponseWriter, r *http.Request) { ctx := appengine.NewContext(r) client := &http.Client{ Transport: &oauth2.Transport{ Source: google.AppEngineTokenSource(ctx, bigquery.BigqueryScope), Base: &urlfetch.Transport{Context: ctx}, }, } bq, err := bigquery.New(client) if err != nil { fmt.Errorf("%v", err) http.Error(w, err.Error(), http.StatusInternalServerError) return } keyStr := r.FormValue("key") key, err := datastore.DecodeKey(keyStr) if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } table := "Moge" tableParam := r.FormValue("table") if len(tableParam) > 0 { table = tableParam } var moge Moge err = datastore.Get(ctx, key, &moge) if err == datastore.ErrNoSuchEntity { http.Error(w, err.Error(), http.StatusNotFound) return } if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } moge.Key = key moge.KeyStr = key.Encode() jsonValue, err := ironmole.BuildJsonValueWithContext(ctx, &moge) if err != nil { log.Errorf(ctx, "%v", err) http.Error(w, err.Error(), http.StatusInternalServerError) return } res, err := ironmole.Insert(bq, "cp300demo1", "go2bq", table, jsonValue) if err != nil { log.Errorf(ctx, "%v", err) http.Error(w, err.Error(), http.StatusInternalServerError) return } for _, insertError := range res.InsertErrors { for _, error := range insertError.Errors { log.Errorf(ctx, "Insert Error = %v", error) http.Error(w, err.Error(), http.StatusInternalServerError) return } } w.WriteHeader(http.StatusOK) w.Write([]byte("done")) }