| OLD | NEW |
| (Empty) |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 package rawdatastore | |
| 6 | |
| 7 import ( | |
| 8 "fmt" | |
| 9 ) | |
| 10 | |
| 11 // ByteString is a short byte slice (up to 1500 bytes) that can be indexed. | |
| 12 type ByteString []byte | |
| 13 | |
| 14 // GeoPoint represents a location as latitude/longitude in degrees. | |
| 15 // | |
| 16 // You probably shouldn't use these, but their inclusion here is so that the | |
| 17 // RawDatastore can interact (and round-trip) correctly with other datastore API | |
| 18 // implementations. | |
| 19 type GeoPoint struct { | |
| 20 Lat, Lng float64 | |
| 21 } | |
| 22 | |
| 23 // Valid returns whether a GeoPoint is within [-90, 90] latitude and [-180, | |
| 24 // 180] longitude. | |
| 25 func (g GeoPoint) Valid() bool { | |
| 26 return -90 <= g.Lat && g.Lat <= 90 && -180 <= g.Lng && g.Lng <= 180 | |
| 27 } | |
| 28 | |
| 29 // TransactionOptions are the options for running a transaction. | |
| 30 type TransactionOptions struct { | |
| 31 // XG is whether the transaction can cross multiple entity groups. In | |
| 32 // comparison, a single group transaction is one where all datastore key
s | |
| 33 // used have the same root key. Note that cross group transactions do no
t | |
| 34 // have the same behavior as single group transactions. In particular, i
t | |
| 35 // is much more likely to see partially applied transactions in differen
t | |
| 36 // entity groups, in global queries. | |
| 37 // It is valid to set XG to true even if the transaction is within a | |
| 38 // single entity group. | |
| 39 XG bool | |
| 40 // Attempts controls the number of retries to perform when commits fail | |
| 41 // due to a conflicting transaction. If omitted, it defaults to 3. | |
| 42 Attempts int | |
| 43 } | |
| 44 | |
| 45 // Toggle is a tri-state boolean (Auto/True/False), which allows structs | |
| 46 // to control boolean flags for metadata in a non-ambiguous way. | |
| 47 type Toggle byte | |
| 48 | |
| 49 // These are the allowed values for Toggle. Any other values are invalid. | |
| 50 const ( | |
| 51 Auto Toggle = iota | |
| 52 On | |
| 53 Off | |
| 54 ) | |
| 55 | |
| 56 func (b Toggle) String() string { | |
| 57 switch b { | |
| 58 case Auto: | |
| 59 return "Auto" | |
| 60 case On: | |
| 61 return "On" | |
| 62 case Off: | |
| 63 return "Off" | |
| 64 default: | |
| 65 return fmt.Sprintf("UNKNOWN_Toggle(%d)", b) | |
| 66 } | |
| 67 } | |
| OLD | NEW |