@@ -14,11 +14,39 @@ func msgpackIsMap(code byte) bool {
14
14
return code == msgpcode .Map16 || code == msgpcode .Map32 || msgpcode .IsFixedMap (code )
15
15
}
16
16
17
+ // SchemaOpts describes options for `crud.schema` method.
18
+ type SchemaOpts struct {
19
+ // Timeout is a `vshard.call` timeout and vshard
20
+ // master discovery timeout (in seconds).
21
+ Timeout OptFloat64
22
+ // VshardRouter is cartridge vshard group name or
23
+ // vshard router instance.
24
+ VshardRouter OptString
25
+ // Cached defines whether router should reload storage schema on call.
26
+ Cached OptBool
27
+ }
28
+
29
+ // EncodeMsgpack provides custom msgpack encoder.
30
+ func (opts SchemaOpts ) EncodeMsgpack (enc * msgpack.Encoder ) error {
31
+ const optsCnt = 3
32
+
33
+ names := [optsCnt ]string {timeoutOptName , vshardRouterOptName ,
34
+ cachedOptName }
35
+ values := [optsCnt ]interface {}{}
36
+ exists := [optsCnt ]bool {}
37
+ values [0 ], exists [0 ] = opts .Timeout .Get ()
38
+ values [1 ], exists [1 ] = opts .VshardRouter .Get ()
39
+ values [2 ], exists [2 ] = opts .Cached .Get ()
40
+
41
+ return encodeOptions (enc , names [:], values [:], exists [:])
42
+ }
43
+
17
44
// SchemaRequest helps you to create request object to call `crud.schema`
18
45
// for execution by a Connection.
19
46
type SchemaRequest struct {
20
47
baseRequest
21
48
space OptString
49
+ opts SchemaOpts
22
50
}
23
51
24
52
// MakeSchemaRequest returns a new empty SchemaRequest.
@@ -35,6 +63,13 @@ func (req SchemaRequest) Space(space string) SchemaRequest {
35
63
return req
36
64
}
37
65
66
+ // Opts sets the options for the SelectRequest request.
67
+ // Note: default value is nil.
68
+ func (req SchemaRequest ) Opts (opts SchemaOpts ) SchemaRequest {
69
+ req .opts = opts
70
+ return req
71
+ }
72
+
38
73
// Body fills an encoder with the call request body.
39
74
func (req SchemaRequest ) Body (res tarantool.SchemaResolver , enc * msgpack.Encoder ) error {
40
75
if value , ok := req .space .Get (); ok {
0 commit comments