Skip to content

Commit 3a47513

Browse files
committed
修复各种选项
1 parent 0bb3187 commit 3a47513

6 files changed

+87
-48
lines changed

Diff for: client_hash.go

+11-11
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ import (
66
`github.com/go-redis/redis/v8`
77
)
88

9-
func (c *Client) HSet(ctx context.Context, key string, opts ...hashOption) (affected int64, err error) {
10-
_options := defaultHashOptions()
9+
func (c *Client) HSet(ctx context.Context, key string, opts ...fieldOption) (affected int64, err error) {
10+
_options := defaultFieldOptions()
1111
for _, opt := range opts {
12-
opt.applyHash(_options)
12+
opt.applyField(_options)
1313
}
1414

1515
values := make([]interface{}, 0, 2*len(_options.fields))
@@ -30,18 +30,18 @@ func (c *Client) HSet(ctx context.Context, key string, opts ...hashOption) (affe
3030
return
3131
}
3232

33-
func (c *Client) HGet(ctx context.Context, key string, field string, value interface{}, opts ...hashOption) (exist bool, err error) {
34-
_options := defaultHashOptions()
33+
func (c *Client) HGet(ctx context.Context, key string, field string, value interface{}, opts ...option) (exist bool, err error) {
34+
_options := defaultOptions()
3535
for _, opt := range opts {
36-
opt.applyHash(_options)
36+
opt.apply(_options)
3737
}
3838

3939
var cmd *redis.StringCmd
4040
defer func() {
4141
exist = redis.Nil != cmd.Err()
4242
}()
4343

44-
if cmd = c.getClient(_options.options).HGet(ctx, key, field); nil != cmd.Err() {
44+
if cmd = c.getClient(_options).HGet(ctx, key, field); nil != cmd.Err() {
4545
err = cmd.Err()
4646
} else {
4747
err = c.unmarshal(cmd.Val(), value, _options.label, _options.serializer)
@@ -50,12 +50,12 @@ func (c *Client) HGet(ctx context.Context, key string, field string, value inter
5050
return
5151
}
5252

53-
func (c *Client) HIncrBy(ctx context.Context, key string, field string, value int64, opts ...hashOption) (affected int64, err error) {
54-
_options := defaultHashOptions()
53+
func (c *Client) HIncrBy(ctx context.Context, key string, field string, value int64, opts ...option) (affected int64, err error) {
54+
_options := defaultOptions()
5555
for _, opt := range opts {
56-
opt.applyHash(_options)
56+
opt.apply(_options)
5757
}
58-
affected, err = c.getClient(_options.options).HIncrBy(ctx, key, field, value).Result()
58+
affected, err = c.getClient(_options).HIncrBy(ctx, key, field, value).Result()
5959

6060
return
6161
}

Diff for: field_option.go

+9-5
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,21 @@
11
package redis
22

33
type (
4-
fieldOptions struct {
5-
serializer serializer
6-
}
7-
84
fieldOption interface {
95
applyField(options *fieldOptions)
106
}
7+
8+
fieldOptions struct {
9+
*options
10+
11+
fields []*field
12+
}
1113
)
1214

1315
func defaultFieldOptions() *fieldOptions {
1416
return &fieldOptions{
15-
serializer: serializerUnknown,
17+
options: defaultOptions(),
18+
19+
fields: make([]*field, 0, 0),
1620
}
1721
}

Diff for: hash_option.go

-21
This file was deleted.

Diff for: hash_option_field.go renamed to option_field.go

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,28 @@
11
package redis
22

3-
var _ hashOption = (*hashOptionField)(nil)
3+
var _ fieldOption = (*optionField)(nil)
44

5-
type hashOptionField struct {
5+
type optionField struct {
66
key string
77
value interface{}
88
format serializer
99
}
1010

1111
// Field 配置字段
12-
func Field(key string, value interface{}, opts ...fieldOption) *hashOptionField {
13-
_options := defaultFieldOptions()
12+
func Field(key string, value interface{}, opts ...option) *optionField {
13+
_options := defaultOptions()
1414
for _, opt := range opts {
15-
opt.applyField(_options)
15+
opt.apply(_options)
1616
}
1717

18-
return &hashOptionField{
18+
return &optionField{
1919
key: key,
2020
value: value,
2121
format: _options.serializer,
2222
}
2323
}
2424

25-
func (f *hashOptionField) applyHash(options *hashOptions) {
25+
func (f *optionField) applyField(options *fieldOptions) {
2626
options.fields = append(options.fields, &field{
2727
key: f.key,
2828
value: f.value,

Diff for: option_label.go

+33-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
package redis
22

3-
var _ option = (*optionLabel)(nil)
3+
var (
4+
_ option = (*optionLabel)(nil)
5+
_ valuesOption = (*optionLabel)(nil)
6+
_ fieldOption = (*optionLabel)(nil)
7+
_ rangeOption = (*optionLabel)(nil)
8+
_ countOption = (*optionLabel)(nil)
9+
_ membersOption = (*optionLabel)(nil)
10+
_ intervalOption = (*optionLabel)(nil)
11+
)
412

513
type optionLabel struct {
614
label string
@@ -23,3 +31,27 @@ func Default() *optionLabel {
2331
func (l *optionLabel) apply(options *options) {
2432
options.label = l.label
2533
}
34+
35+
func (l *optionLabel) applyValues(options *valuesOptions) {
36+
options.label = l.label
37+
}
38+
39+
func (l *optionLabel) applyField(options *fieldOptions) {
40+
options.label = l.label
41+
}
42+
43+
func (l *optionLabel) applyRange(options *rangeOptions) {
44+
options.label = l.label
45+
}
46+
47+
func (l *optionLabel) applyCount(options *countOptions) {
48+
options.label = l.label
49+
}
50+
51+
func (l *optionLabel) applyMembers(options *membersOptions) {
52+
options.label = l.label
53+
}
54+
55+
func (l *optionLabel) applyInterval(options *intervalOptions) {
56+
options.label = l.label
57+
}

Diff for: option_serializer.go

+27-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
package redis
22

3-
var _ option = (*optionSerializer)(nil)
3+
var (
4+
_ option = (*optionSerializer)(nil)
5+
_ valuesOption = (*optionSerializer)(nil)
6+
_ fieldOption = (*optionSerializer)(nil)
7+
_ countOption = (*optionSerializer)(nil)
8+
_ rangeOption = (*optionSerializer)(nil)
9+
_ membersOption = (*optionSerializer)(nil)
10+
_ intervalOption = (*optionSerializer)(nil)
11+
)
412

513
type optionSerializer struct {
614
serializer serializer
@@ -101,10 +109,26 @@ func (s *optionSerializer) apply(options *options) {
101109
options.serializer = s.serializer
102110
}
103111

104-
func (s *optionSerializer) applyHash(options *hashOptions) {
112+
func (s *optionSerializer) applyField(options *fieldOptions) {
105113
options.serializer = s.serializer
106114
}
107115

108-
func (s *optionSerializer) applyField(options *fieldOptions) {
116+
func (s *optionSerializer) applyValues(options *valuesOptions) {
117+
options.serializer = s.serializer
118+
}
119+
120+
func (s *optionSerializer) applyRange(options *rangeOptions) {
121+
options.serializer = s.serializer
122+
}
123+
124+
func (s *optionSerializer) applyCount(options *countOptions) {
125+
options.serializer = s.serializer
126+
}
127+
128+
func (s *optionSerializer) applyMembers(options *membersOptions) {
129+
options.serializer = s.serializer
130+
}
131+
132+
func (s *optionSerializer) applyInterval(options *intervalOptions) {
109133
options.serializer = s.serializer
110134
}

0 commit comments

Comments
 (0)