github.com/graybobo/golang.org-package-offline-cache@v0.0.0-20200626051047-6608995c132f/x/tools/dashboard/app/build/init.go (about)

     1  // Copyright 2012 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  // +build appengine
     6  
     7  package build
     8  
     9  import (
    10  	"fmt"
    11  	"net/http"
    12  
    13  	"appengine"
    14  	"appengine/datastore"
    15  
    16  	"cache"
    17  	"key"
    18  )
    19  
    20  func initHandler(w http.ResponseWriter, r *http.Request) {
    21  	d := dashboardForRequest(r)
    22  	c := d.Context(appengine.NewContext(r))
    23  	defer cache.Tick(c)
    24  	for _, p := range d.Packages {
    25  		err := datastore.Get(c, p.Key(c), new(Package))
    26  		if _, ok := err.(*datastore.ErrFieldMismatch); ok {
    27  			// Some fields have been removed, so it's okay to ignore this error.
    28  			err = nil
    29  		}
    30  		if err == nil {
    31  			continue
    32  		} else if err != datastore.ErrNoSuchEntity {
    33  			logErr(w, r, err)
    34  			return
    35  		}
    36  		p.NextNum = 1 // So we can add the first commit.
    37  		if _, err := datastore.Put(c, p.Key(c), p); err != nil {
    38  			logErr(w, r, err)
    39  			return
    40  		}
    41  	}
    42  
    43  	// Create secret key.
    44  	key.Secret(c)
    45  
    46  	fmt.Fprint(w, "OK")
    47  }