...
1{{> partials.copyHeader }}
2
3package query
4
5import (
6 "net/url"
7 "strconv"
8)
9
10type Params struct {
11{{#each queryOptions as |query|}}
12 {{#if (eq query.name "provider")}}
13 {{structProp query.name}} interface{} `json:"{{query.name}},omitempty"`
14 {{else if (eq query.type "bool")}}
15 {{structProp query.name}} *{{query.type}} `json:"{{query.name}},omitempty"`
16 {{else}}
17 {{structProp query.name}} {{query.type}} `json:"{{query.name}},omitempty"`
18 {{/if}}
19{{/each}}
20}
21
22func NewQueryParams(paramOpt ...ParamOptions) *Params {
23 p := &Params{}
24
25 for _, par := range paramOpt {
26 par(p)
27 }
28
29 return p
30}
31
32type ParamOptions func(*Params)
33
34{{#each queryOptions as |query|}}
35func With{{structProp query.name}}(query{{structProp query.name}} {{paramType query}}) ParamOptions {
36 return func(p *Params) {
37 {{#if (eq query.name "provider")}}
38 p.{{structProp query.name}} = query{{structProp query.name}}
39 {{else if (eq query.type "bool")}}
40 b := new(bool)
41 *b = query{{structProp query.name}}
42 p.{{structProp query.name}} = b
43 {{else}}
44 p.{{structProp query.name}} = query{{structProp query.name}}
45 {{/if}}
46 }
47}
48{{/each}}
49
50func (p *Params) String() string {
51 qs := url.Values{}
52
53{{#each queryOptions as |query|}}
54 {{#if (eq query.name "provider")}}
55 if (p.{{structProp query.name}} != nil) {
56 if b, ok := p.{{structProp query.name}}.(bool); ok {
57 qs.Add(`{{query.name}}`, strconv.FormatBool(b))
58 } else {
59 qs.Add(`{{query.name}}`, p.{{structProp query.name}}.(string))
60 }
61 }
62 {{else if (eq query.type "bool")}}
63 if (p.{{structProp query.name}} != nil) {
64 qs.Add(`{{query.name}}`, strconv.FormatBool(*p.{{structProp query.name}}))
65 }
66 {{else if (eq query.type "int64")}}
67 if (p.{{structProp query.name}} != 0) {
68 qs.Add(`{{query.name}}`, strconv.FormatInt(p.{{structProp query.name}}, 10))
69 }
70 {{else if (eq query.type "string")}}
71 if (p.{{structProp query.name}} != "") {
72 qs.Add(`{{query.name}}`, p.{{structProp query.name}})
73 }
74 {{else}}
75 {{log "query.go.hbs: unknown type for Params.String()" level="error"}}
76 {{/if}}
77{{/each}}
78
79 if len(qs) != 0 {
80 return "?" + qs.Encode()
81 }
82 return ""
83}
84
View as plain text