Skip to content

Commit bbb4da5

Browse files
authored
Merge pull request #2 from ofekshenawa/define-policy-types
feat(routing): add internal request/response policy enums
2 parents e191cf9 + 469bce4 commit bbb4da5

File tree

1 file changed

+118
-0
lines changed

1 file changed

+118
-0
lines changed

internal/routing/policy.go

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
package routing
2+
3+
import (
4+
"fmt"
5+
"strings"
6+
)
7+
8+
type RequestPolicy uint8
9+
10+
const (
11+
ReqDefault RequestPolicy = iota
12+
13+
ReqAllNodes
14+
15+
ReqAllShards
16+
17+
ReqMultiShard
18+
19+
ReqSpecial
20+
)
21+
22+
func (p RequestPolicy) String() string {
23+
switch p {
24+
case ReqDefault:
25+
return "default"
26+
case ReqAllNodes:
27+
return "all_nodes"
28+
case ReqAllShards:
29+
return "all_shards"
30+
case ReqMultiShard:
31+
return "multi_shard"
32+
case ReqSpecial:
33+
return "special"
34+
default:
35+
return fmt.Sprintf("unknown_request_policy(%d)", p)
36+
}
37+
}
38+
39+
func ParseRequestPolicy(raw string) (RequestPolicy, error) {
40+
switch strings.ToLower(raw) {
41+
case "", "default", "none":
42+
return ReqDefault, nil
43+
case "all_nodes":
44+
return ReqAllNodes, nil
45+
case "all_shards":
46+
return ReqAllShards, nil
47+
case "multi_shard":
48+
return ReqMultiShard, nil
49+
case "special":
50+
return ReqSpecial, nil
51+
default:
52+
return ReqDefault, fmt.Errorf("routing: unknown request_policy %q", raw)
53+
}
54+
}
55+
56+
type ResponsePolicy uint8
57+
58+
const (
59+
RespAllSucceeded ResponsePolicy = iota
60+
RespOneSucceeded
61+
RespAggSum
62+
RespAggMin
63+
RespAggMax
64+
RespAggLogicalAnd
65+
RespAggLogicalOr
66+
RespSpecial
67+
)
68+
69+
func (p ResponsePolicy) String() string {
70+
switch p {
71+
case RespAllSucceeded:
72+
return "all_succeeded"
73+
case RespOneSucceeded:
74+
return "one_succeeded"
75+
case RespAggSum:
76+
return "agg_sum"
77+
case RespAggMin:
78+
return "agg_min"
79+
case RespAggMax:
80+
return "agg_max"
81+
case RespAggLogicalAnd:
82+
return "agg_logical_and"
83+
case RespAggLogicalOr:
84+
return "agg_logical_or"
85+
case RespSpecial:
86+
return "special"
87+
default:
88+
return fmt.Sprintf("unknown_response_policy(%d)", p)
89+
}
90+
}
91+
92+
func ParseResponsePolicy(raw string) (ResponsePolicy, error) {
93+
switch strings.ToLower(raw) {
94+
case "all_succeeded":
95+
return RespAllSucceeded, nil
96+
case "one_succeeded":
97+
return RespOneSucceeded, nil
98+
case "agg_sum":
99+
return RespAggSum, nil
100+
case "agg_min":
101+
return RespAggMin, nil
102+
case "agg_max":
103+
return RespAggMax, nil
104+
case "agg_logical_and":
105+
return RespAggLogicalAnd, nil
106+
case "agg_logical_or":
107+
return RespAggLogicalOr, nil
108+
case "special":
109+
return RespSpecial, nil
110+
default:
111+
return RespAllSucceeded, fmt.Errorf("routing: unknown response_policy %q", raw)
112+
}
113+
}
114+
115+
type CommandPolicy struct {
116+
Request RequestPolicy
117+
Response ResponsePolicy
118+
}

0 commit comments

Comments
 (0)