OLD | NEW |
1 package model | 1 package model |
2 | 2 |
3 import ( | 3 import ( |
4 "bytes" | 4 "bytes" |
5 "fmt" | 5 "fmt" |
6 "io" | 6 "io" |
7 "io/ioutil" | 7 "io/ioutil" |
8 "math" | 8 "math" |
9 "time" | 9 "time" |
10 | 10 |
11 "golang.org/x/net/context" | 11 "golang.org/x/net/context" |
12 | 12 |
13 "github.com/luci/gae/service/datastore" | 13 "github.com/luci/gae/service/datastore" |
14 "github.com/luci/luci-go/common/errors" | 14 "github.com/luci/luci-go/common/errors" |
15 "github.com/luci/luci-go/common/logging" | 15 "github.com/luci/luci-go/common/logging" |
16 ) | 16 ) |
17 | 17 |
18 // IsAggregateTestFile returns whether filename is that of an aggregate test fil
e. | 18 // IsAggregateTestFile returns whether filename is that of an aggregate test fil
e. |
19 func IsAggregateTestFile(filename string) bool { | 19 func IsAggregateTestFile(filename string) bool { |
20 switch filename { | 20 switch filename { |
21 case "results.json", "results-small.json": | 21 case "results.json", "results-small.json": |
22 return true | 22 return true |
23 default: | 23 default: |
24 return false | 24 return false |
25 } | 25 } |
26 } | 26 } |
27 | 27 |
28 // BuildNum is int64 that is used to handle TestFile datastore records | 28 // BuildNum is int64 that is used to handle TestFile datastore records |
29 // with null build_number. | 29 // with null build_number. The value is >= 0 if the datastore value |
| 30 // was not null. |
30 type BuildNum int64 | 31 type BuildNum int64 |
31 | 32 |
32 var _ datastore.PropertyConverter = (*BuildNum)(nil) | 33 var _ datastore.PropertyConverter = (*BuildNum)(nil) |
33 | 34 |
| 35 // IsNil returns whether b had null value in datastore. |
34 func (b *BuildNum) IsNil() bool { return *b == -1 } | 36 func (b *BuildNum) IsNil() bool { return *b == -1 } |
35 | 37 |
| 38 // ToProperty is for implementing datastore.PropertyConverter. |
36 func (b *BuildNum) ToProperty() (p datastore.Property, err error) { | 39 func (b *BuildNum) ToProperty() (p datastore.Property, err error) { |
37 if b.IsNil() { | 40 if b.IsNil() { |
38 return | 41 return |
39 } | 42 } |
40 p = datastore.MkProperty(*b) | 43 p = datastore.MkProperty(*b) |
41 return | 44 return |
42 } | 45 } |
43 | 46 |
| 47 // FromProperty is for implementing datastore.PropertyConverter. |
44 func (b *BuildNum) FromProperty(p datastore.Property) error { | 48 func (b *BuildNum) FromProperty(p datastore.Property) error { |
45 switch p.Type() { | 49 switch p.Type() { |
46 case datastore.PTNull: | 50 case datastore.PTNull: |
47 *b = -1 | 51 *b = -1 |
48 case datastore.PTInt: | 52 case datastore.PTInt: |
49 *b = BuildNum(p.Value().(int64)) | 53 *b = BuildNum(p.Value().(int64)) |
50 default: | 54 default: |
51 return fmt.Errorf("wrong type for property: %s", p.Type()) | 55 return fmt.Errorf("wrong type for property: %s", p.Type()) |
52 } | 56 } |
53 return nil | 57 return nil |
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
312 q = q.Order("-date") | 316 q = q.Order("-date") |
313 | 317 |
314 if p.Limit < 0 || p.Limit > defaultLimit { | 318 if p.Limit < 0 || p.Limit > defaultLimit { |
315 q = q.Limit(defaultLimit) | 319 q = q.Limit(defaultLimit) |
316 } else { | 320 } else { |
317 q = q.Limit(p.Limit) | 321 q = q.Limit(p.Limit) |
318 } | 322 } |
319 | 323 |
320 return q | 324 return q |
321 } | 325 } |
OLD | NEW |