本文整理汇总了Golang中github.com/skypies/flightdb/gae.FlightDB.FlightExists方法的典型用法代码示例。如果您正苦于以下问题:Golang FlightDB.FlightExists方法的具体用法?Golang FlightDB.FlightExists怎么用?Golang FlightDB.FlightExists使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/skypies/flightdb/gae.FlightDB
的用法示例。
在下文中一共展示了FlightDB.FlightExists方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: addflightHandler
func addflightHandler(w http.ResponseWriter, r *http.Request) {
c := appengine.NewContext(r)
log := fmt.Sprintf("* addFlightHandler invoked: %s\n", time.Now().UTC())
fsStr := r.FormValue("flightsnapshot")
fs := ftype.FlightSnapshot{}
if err := fs.Base64Decode(fsStr); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
fr24Id := fs.F.Id.ForeignKeys["fr24"] // This is the only field we take from the
log += fmt.Sprintf("* fr24 key: %s\n", fr24Id)
db := fdb.FlightDB{C: c}
fr24db, err := fdb24.NewFlightDBFr24(urlfetch.Client(c))
if err != nil {
c.Errorf(" /mdb/addflight: newdb: %v", err)
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
// Be idempotent - check to see if this flight has already been recorded
/* Can't do this check now; the fs.F.Id we cached might be different from the
* f.Id we get back from LookupPlayback(), because fr24 reuse their keys.
*
if exists,err := db.FlightExists(fs.F.Id.UniqueIdentifier()); err != nil {
c.Errorf(" /mdb/addflight: FlightExists check failed: %v", err)
http.Error(w, err.Error(), http.StatusInternalServerError)
return
} else if exists {
c.Infof(" /mdb/addflight: already exists %s", fs)
w.Write([]byte(fmt.Sprintf("Skipped %s\n", fs)))
return
}
log += fmt.Sprintf("* FlightExists('%s') -> false\n", fs.F.Id.UniqueIdentifier())
*/
// Now grab an initial flight (with track), from fr24.
var f *ftype.Flight
if f, err = fr24db.LookupPlayback(fr24Id); err != nil {
// c.Errorf(" /mdb/addflight: lookup: %v", err)
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
log += fmt.Sprintf("* the fr24/default track has %d points\n", len(f.Track))
// Kludge: fr24 keys get reused, so the flight fr24 thinks it refers to might be
// different than when we cached it. So we do the uniqueness check here, to avoid
// dupes in the DB. Need a better solution to this.
if exists, err := db.FlightExists(f.Id.UniqueIdentifier()); err != nil {
c.Errorf(" /mdb/addflight: FlightExists check failed: %v", err)
http.Error(w, err.Error(), http.StatusInternalServerError)
return
} else if exists {
c.Infof(" /mdb/addflight: already exists %s", *f)
w.Write([]byte(fmt.Sprintf("Skipped %s\n", *f)))
return
}
log += fmt.Sprintf("* FlightExists('%s') -> false\n", f.Id.UniqueIdentifier())
// Fetch ADSB tracks from the new thing
err, deb := f.GetV2ADSBTrack(urlfetch.Client(c))
log += "* fetchV2ADSB\n" + deb
if err != nil {
c.Errorf("ADSB fetch err: %v", err)
}
// If we have any locally received ADSB fragments for this flight, add them in
//if err := db.MaybeAddTrackFragmentsToFlight(f); err != nil {
// c.Errorf(" /mdb/addflight: addTrackFrags(%s): %v", f.Id, err)
//}
f.AnalyseFlightPath() // Takes a coarse look at the flight path
log += fmt.Sprintf("* Initial tags: %v\n", f.TagList())
// For flights on the SERFR1 or BRIXX1 approaches, fetch a flightaware track
if f.HasTag(ftype.KTagSERFR1) || f.HasTag(ftype.KTagBRIXX) {
u, p := kFlightawareAPIUsername, kFlightawareAPIKey
if err := fdbfa.AddFlightAwareTrack(urlfetch.Client(c), f, u, p); err != nil {
c.Errorf(" /mdb/addflight: addflightaware: %v", err)
}
}
f.Analyse()
if err := db.PersistFlight(*f, log); err != nil {
c.Errorf(" /mdb/addflight: persist: %v", err)
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
// Success !
w.Write([]byte(fmt.Sprintf("Added %s\n", f)))
}