-
Notifications
You must be signed in to change notification settings - Fork 0
/
models_gen.go
139 lines (120 loc) · 4.17 KB
/
models_gen.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
// Code generated by github.com/99designs/gqlgen, DO NOT EDIT.
package model
import (
"fmt"
"io"
"strconv"
"time"
)
// A list of probabilities (one for each outcome) together with a timestamp and
// an explanation why you made this estimate. Every time you change your mind
// about a forecast you will create a new Estimate.
// All probabilities always add up to 100.
type Estimate struct {
ID string `json:"id"`
Created time.Time `json:"created"`
Reason string `json:"reason"`
Probabilities []*Probability `json:"probabilities"`
BrierScore *float64 `json:"brierScore,omitempty"`
}
// A prediction about the future.
type Forecast struct {
ID string `json:"id"`
Title string `json:"title"`
Description string `json:"description"`
Created time.Time `json:"created"`
// The point in time at which you predict you will be able to resolve whether
// how the forecast resolved.
Resolves time.Time `json:"resolves"`
// The point in time at which you no longer want to update your probability
// estimates for the forecast. In most cases you won't need this. One example
// where you might is when you want to predict the outcome of an exam. You may
// want to set 'closes' to the time right before the exam starts, even though
// 'resolves' is several weeks later (when the exam results are published). This
// way your prediction history will only reflect your estimations before you
// took the exam, which is something you may want (or not, in which case you
// could simply not set 'closes').
Closes *time.Time `json:"closes,omitempty"`
Resolution Resolution `json:"resolution"`
Estimates []*Estimate `json:"estimates"`
}
// Information about the application itself e.g. the current version.
type Metadata struct {
Version string `json:"version"`
}
type NewEstimate struct {
Reason string `json:"reason"`
Probabilities []*NewProbability `json:"probabilities"`
// An optional date in the past when you created this estimate. This can be
// useful for cases when you wrote it down on a piece of paper or when importing
// from other software. When creating a new Forecast this value will be for
// the first Estimate (which will get the same timestamp as the
// Forecast.Created).
Created *time.Time `json:"created,omitempty"`
}
type NewForecast struct {
Title string `json:"title"`
Description string `json:"description"`
Resolves time.Time `json:"resolves"`
Closes *time.Time `json:"closes,omitempty"`
// An optional date in the past when you created this forecast. This can be
// useful for cases when you wrote it down on a piece of paper or when importing
// from other software.
Created *time.Time `json:"created,omitempty"`
}
type NewOutcome struct {
Text string `json:"text"`
}
type NewProbability struct {
Value int `json:"value"`
Outcome *NewOutcome `json:"outcome"`
}
// The possible results of a forecast. In the simplest case you will only have
// two outcomes: Yes and No.
type Outcome struct {
ID string `json:"id"`
Text string `json:"text"`
Correct bool `json:"correct"`
}
// A number between 0 and 100 tied to a specific Outcome. It is always part of
// an Estimate.
type Probability struct {
ID string `json:"id"`
Value int `json:"value"`
Outcome *Outcome `json:"outcome"`
}
type Resolution string
const (
ResolutionResolved Resolution = "RESOLVED"
ResolutionNotApplicable Resolution = "NOT_APPLICABLE"
ResolutionUnresolved Resolution = "UNRESOLVED"
)
var AllResolution = []Resolution{
ResolutionResolved,
ResolutionNotApplicable,
ResolutionUnresolved,
}
func (e Resolution) IsValid() bool {
switch e {
case ResolutionResolved, ResolutionNotApplicable, ResolutionUnresolved:
return true
}
return false
}
func (e Resolution) String() string {
return string(e)
}
func (e *Resolution) UnmarshalGQL(v interface{}) error {
str, ok := v.(string)
if !ok {
return fmt.Errorf("enums must be strings")
}
*e = Resolution(str)
if !e.IsValid() {
return fmt.Errorf("%s is not a valid Resolution", str)
}
return nil
}
func (e Resolution) MarshalGQL(w io.Writer) {
fmt.Fprint(w, strconv.Quote(e.String()))
}