Skip to content

Commit 7bb2d7c

Browse files
committed
refactoring of query public entities
1 parent 6f514c4 commit 7bb2d7c

File tree

16 files changed

+385
-192
lines changed

16 files changed

+385
-192
lines changed

internal/query/client.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212

1313
"github.com/ydb-platform/ydb-go-sdk/v3/internal/pool"
1414
"github.com/ydb-platform/ydb-go-sdk/v3/internal/query/config"
15+
"github.com/ydb-platform/ydb-go-sdk/v3/internal/query/options"
1516
"github.com/ydb-platform/ydb-go-sdk/v3/internal/stack"
1617
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xcontext"
1718
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xerrors"
@@ -48,9 +49,9 @@ func do(
4849
pool *pool.Pool[Session],
4950
op query.Operation,
5051
t *trace.Query,
51-
opts ...query.DoOption,
52+
opts ...options.DoOption,
5253
) (finalErr error) {
53-
doOpts := query.ParseDoOpts(t, opts...)
54+
doOpts := options.ParseDoOpts(t, opts...)
5455

5556
err := pool.With(ctx, func(ctx context.Context, s *Session) error {
5657
err := op(ctx, s)
@@ -85,7 +86,7 @@ func do(
8586
return nil
8687
}
8788

88-
func (c Client) Do(ctx context.Context, op query.Operation, opts ...query.DoOption) error {
89+
func (c Client) Do(ctx context.Context, op query.Operation, opts ...options.DoOption) error {
8990
return do(ctx, c.pool, op, c.config.Trace(), opts...)
9091
}
9192

@@ -94,9 +95,9 @@ func doTx(
9495
pool *pool.Pool[Session],
9596
op query.TxOperation,
9697
t *trace.Query,
97-
opts ...query.DoTxOption,
98+
opts ...options.DoTxOption,
9899
) error {
99-
doTxOpts := query.ParseDoTxOpts(t, opts...)
100+
doTxOpts := options.ParseDoTxOpts(t, opts...)
100101

101102
err := do(ctx, pool, func(ctx context.Context, s query.Session) error {
102103
tx, err := s.Begin(ctx, doTxOpts.TxSettings())
@@ -131,7 +132,7 @@ func doTx(
131132
return nil
132133
}
133134

134-
func (c Client) DoTx(ctx context.Context, op query.TxOperation, opts ...query.DoTxOption) error {
135+
func (c Client) DoTx(ctx context.Context, op query.TxOperation, opts ...options.DoTxOption) error {
135136
return doTx(ctx, c.pool, op, c.config.Trace(), opts...)
136137
}
137138

internal/query/execute_query.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,17 @@ import (
99

1010
"github.com/ydb-platform/ydb-go-sdk/v3/internal/allocator"
1111
"github.com/ydb-platform/ydb-go-sdk/v3/internal/params"
12+
"github.com/ydb-platform/ydb-go-sdk/v3/internal/query/options"
1213
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xcontext"
1314
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xerrors"
1415
"github.com/ydb-platform/ydb-go-sdk/v3/query"
1516
)
1617

1718
type executeConfig interface {
18-
ExecMode() query.ExecMode
19-
StatsMode() query.StatsMode
19+
ExecMode() options.ExecMode
20+
StatsMode() options.StatsMode
2021
TxControl() *query.TransactionControl
21-
Syntax() query.Syntax
22+
Syntax() options.Syntax
2223
Params() *params.Parameters
2324
CallOptions() []grpc.CallOption
2425
}

internal/query/execute_query_test.go

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ import (
1616

1717
"github.com/ydb-platform/ydb-go-sdk/v3/internal/allocator"
1818
"github.com/ydb-platform/ydb-go-sdk/v3/internal/params"
19+
"github.com/ydb-platform/ydb-go-sdk/v3/internal/query/options"
1920
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xerrors"
2021
"github.com/ydb-platform/ydb-go-sdk/v3/internal/xtest"
21-
"github.com/ydb-platform/ydb-go-sdk/v3/query"
2222
)
2323

2424
func TestExecute(t *testing.T) {
@@ -356,7 +356,7 @@ func TestExecute(t *testing.T) {
356356
service := NewMockQueryServiceClient(ctrl)
357357
service.EXPECT().ExecuteQuery(gomock.Any(), gomock.Any()).Return(stream, nil)
358358
t.Log("execute")
359-
tx, r, err := execute(ctx, &Session{id: "123"}, service, "", query.ExecuteSettings())
359+
tx, r, err := execute(ctx, &Session{id: "123"}, service, "", options.ExecuteSettings())
360360
require.NoError(t, err)
361361
defer r.Close(ctx)
362362
require.EqualValues(t, "456", tx.id)
@@ -469,7 +469,7 @@ func TestExecute(t *testing.T) {
469469
service := NewMockQueryServiceClient(ctrl)
470470
service.EXPECT().ExecuteQuery(gomock.Any(), gomock.Any()).Return(nil, grpcStatus.Error(grpcCodes.Unavailable, ""))
471471
t.Log("execute")
472-
_, _, err := execute(ctx, &Session{id: "123"}, service, "", query.ExecuteSettings())
472+
_, _, err := execute(ctx, &Session{id: "123"}, service, "", options.ExecuteSettings())
473473
require.Error(t, err)
474474
require.True(t, xerrors.IsTransportError(err, grpcCodes.Unavailable))
475475
})
@@ -573,7 +573,7 @@ func TestExecute(t *testing.T) {
573573
service := NewMockQueryServiceClient(ctrl)
574574
service.EXPECT().ExecuteQuery(gomock.Any(), gomock.Any()).Return(stream, nil)
575575
t.Log("execute")
576-
tx, r, err := execute(ctx, &Session{id: "123"}, service, "", query.ExecuteSettings())
576+
tx, r, err := execute(ctx, &Session{id: "123"}, service, "", options.ExecuteSettings())
577577
require.NoError(t, err)
578578
defer r.Close(ctx)
579579
require.EqualValues(t, "456", tx.id)
@@ -637,7 +637,7 @@ func TestExecute(t *testing.T) {
637637
service := NewMockQueryServiceClient(ctrl)
638638
service.EXPECT().ExecuteQuery(gomock.Any(), gomock.Any()).Return(stream, nil)
639639
t.Log("execute")
640-
_, _, err := execute(ctx, &Session{id: "123"}, service, "", query.ExecuteSettings())
640+
_, _, err := execute(ctx, &Session{id: "123"}, service, "", options.ExecuteSettings())
641641
require.Error(t, err)
642642
require.True(t, xerrors.IsOperationError(err, Ydb.StatusIds_UNAVAILABLE))
643643
})
@@ -713,7 +713,7 @@ func TestExecute(t *testing.T) {
713713
service := NewMockQueryServiceClient(ctrl)
714714
service.EXPECT().ExecuteQuery(gomock.Any(), gomock.Any()).Return(stream, nil)
715715
t.Log("execute")
716-
tx, r, err := execute(ctx, &Session{id: "123"}, service, "", query.ExecuteSettings())
716+
tx, r, err := execute(ctx, &Session{id: "123"}, service, "", options.ExecuteSettings())
717717
require.NoError(t, err)
718718
defer r.Close(ctx)
719719
require.EqualValues(t, "456", tx.id)
@@ -760,7 +760,7 @@ func TestExecuteQueryRequest(t *testing.T) {
760760
a := allocator.New()
761761
for _, tt := range []struct {
762762
name string
763-
opts []query.ExecuteOption
763+
opts []options.ExecuteOption
764764
request *Ydb_Query.ExecuteQueryRequest
765765
callOptions []grpc.CallOption
766766
}{
@@ -791,8 +791,8 @@ func TestExecuteQueryRequest(t *testing.T) {
791791
},
792792
{
793793
name: "WithParams",
794-
opts: []query.ExecuteOption{
795-
query.WithParameters(
794+
opts: []options.ExecuteOption{
795+
options.WithParameters(
796796
params.Builder{}.
797797
Param("$a").Text("A").
798798
Param("$b").Text("B").
@@ -863,8 +863,8 @@ func TestExecuteQueryRequest(t *testing.T) {
863863
},
864864
{
865865
name: "WithExplain",
866-
opts: []query.ExecuteOption{
867-
query.WithExecMode(query.ExecModeExplain),
866+
opts: []options.ExecuteOption{
867+
options.WithExecMode(options.ExecModeExplain),
868868
},
869869
request: &Ydb_Query.ExecuteQueryRequest{
870870
SessionId: "WithExplain",
@@ -891,8 +891,8 @@ func TestExecuteQueryRequest(t *testing.T) {
891891
},
892892
{
893893
name: "WithValidate",
894-
opts: []query.ExecuteOption{
895-
query.WithExecMode(query.ExecModeValidate),
894+
opts: []options.ExecuteOption{
895+
options.WithExecMode(options.ExecModeValidate),
896896
},
897897
request: &Ydb_Query.ExecuteQueryRequest{
898898
SessionId: "WithValidate",
@@ -919,8 +919,8 @@ func TestExecuteQueryRequest(t *testing.T) {
919919
},
920920
{
921921
name: "WithValidate",
922-
opts: []query.ExecuteOption{
923-
query.WithExecMode(query.ExecModeParse),
922+
opts: []options.ExecuteOption{
923+
options.WithExecMode(options.ExecModeParse),
924924
},
925925
request: &Ydb_Query.ExecuteQueryRequest{
926926
SessionId: "WithValidate",
@@ -947,8 +947,8 @@ func TestExecuteQueryRequest(t *testing.T) {
947947
},
948948
{
949949
name: "WithStatsFull",
950-
opts: []query.ExecuteOption{
951-
query.WithStatsMode(query.StatsModeFull),
950+
opts: []options.ExecuteOption{
951+
options.WithStatsMode(options.StatsModeFull),
952952
},
953953
request: &Ydb_Query.ExecuteQueryRequest{
954954
SessionId: "WithStatsFull",
@@ -975,8 +975,8 @@ func TestExecuteQueryRequest(t *testing.T) {
975975
},
976976
{
977977
name: "WithStatsBasic",
978-
opts: []query.ExecuteOption{
979-
query.WithStatsMode(query.StatsModeBasic),
978+
opts: []options.ExecuteOption{
979+
options.WithStatsMode(options.StatsModeBasic),
980980
},
981981
request: &Ydb_Query.ExecuteQueryRequest{
982982
SessionId: "WithStatsBasic",
@@ -1003,8 +1003,8 @@ func TestExecuteQueryRequest(t *testing.T) {
10031003
},
10041004
{
10051005
name: "WithStatsProfile",
1006-
opts: []query.ExecuteOption{
1007-
query.WithStatsMode(query.StatsModeProfile),
1006+
opts: []options.ExecuteOption{
1007+
options.WithStatsMode(options.StatsModeProfile),
10081008
},
10091009
request: &Ydb_Query.ExecuteQueryRequest{
10101010
SessionId: "WithStatsProfile",
@@ -1031,8 +1031,8 @@ func TestExecuteQueryRequest(t *testing.T) {
10311031
},
10321032
{
10331033
name: "WithGrpcCallOptions",
1034-
opts: []query.ExecuteOption{
1035-
query.WithCallOptions(grpc.Header(&metadata.MD{
1034+
opts: []options.ExecuteOption{
1035+
options.WithCallOptions(grpc.Header(&metadata.MD{
10361036
"ext-header": []string{"test"},
10371037
})),
10381038
},
@@ -1066,7 +1066,7 @@ func TestExecuteQueryRequest(t *testing.T) {
10661066
},
10671067
} {
10681068
t.Run(tt.name, func(t *testing.T) {
1069-
request, callOptions := executeQueryRequest(a, tt.name, tt.name, query.ExecuteSettings(tt.opts...))
1069+
request, callOptions := executeQueryRequest(a, tt.name, tt.name, options.ExecuteSettings(tt.opts...))
10701070
require.Equal(t, request.String(), tt.request.String())
10711071
require.Equal(t, tt.callOptions, callOptions)
10721072
})

query/execute_options.go renamed to internal/query/options/execute.go

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
package query
1+
package options
22

33
import (
44
"github.com/ydb-platform/ydb-go-genproto/protos/Ydb_Query"
55
"google.golang.org/grpc"
66

77
"github.com/ydb-platform/ydb-go-sdk/v3/internal/params"
8+
"github.com/ydb-platform/ydb-go-sdk/v3/internal/query/tx"
89
)
910

1011
type (
@@ -19,16 +20,16 @@ type (
1920
statsMode StatsMode
2021
callOptions []grpc.CallOption
2122
}
22-
executeSettings struct {
23+
Execute struct {
2324
commonExecuteSettings
2425

25-
txControl *TransactionControl
26+
txControl *tx.Control
2627
}
2728
ExecuteOption interface {
28-
applyExecuteOption(s *executeSettings)
29+
applyExecuteOption(s *Execute)
2930
}
3031
txExecuteSettings struct {
31-
ExecuteSettings *executeSettings
32+
ExecuteSettings *Execute
3233

3334
commitTx bool
3435
}
@@ -37,8 +38,15 @@ type (
3738
}
3839
txCommitOption struct{}
3940
parametersOption params.Parameters
41+
txControlOption struct {
42+
txControl *tx.Control
43+
}
4044
)
4145

46+
func (opt txControlOption) applyExecuteOption(s *Execute) {
47+
s.txControl = opt.txControl
48+
}
49+
4250
func (t txCommitOption) applyTxExecuteOption(s *txExecuteSettings) {
4351
s.commitTx = true
4452
}
@@ -47,7 +55,7 @@ func (syntax Syntax) applyTxExecuteOption(s *txExecuteSettings) {
4755
syntax.applyExecuteOption(s.ExecuteSettings)
4856
}
4957

50-
func (syntax Syntax) applyExecuteOption(s *executeSettings) {
58+
func (syntax Syntax) applyExecuteOption(s *Execute) {
5159
s.syntax = syntax
5260
}
5361

@@ -60,11 +68,11 @@ func (params parametersOption) applyTxExecuteOption(s *txExecuteSettings) {
6068
params.applyExecuteOption(s.ExecuteSettings)
6169
}
6270

63-
func (params parametersOption) applyExecuteOption(s *executeSettings) {
71+
func (params parametersOption) applyExecuteOption(s *Execute) {
6472
s.params = append(s.params, params...)
6573
}
6674

67-
func (opts callOptions) applyExecuteOption(s *executeSettings) {
75+
func (opts callOptions) applyExecuteOption(s *Execute) {
6876
s.callOptions = append(s.callOptions, opts...)
6977
}
7078

@@ -76,15 +84,15 @@ func (mode StatsMode) applyTxExecuteOption(s *txExecuteSettings) {
7684
mode.applyExecuteOption(s.ExecuteSettings)
7785
}
7886

79-
func (mode StatsMode) applyExecuteOption(s *executeSettings) {
87+
func (mode StatsMode) applyExecuteOption(s *Execute) {
8088
s.statsMode = mode
8189
}
8290

8391
func (mode ExecMode) applyTxExecuteOption(s *txExecuteSettings) {
8492
mode.applyExecuteOption(s.ExecuteSettings)
8593
}
8694

87-
func (mode ExecMode) applyExecuteOption(s *executeSettings) {
95+
func (mode ExecMode) applyExecuteOption(s *Execute) {
8896
s.execMode = mode
8997
}
9098

@@ -110,23 +118,27 @@ func defaultCommonExecuteSettings() commonExecuteSettings {
110118
}
111119
}
112120

113-
func ExecuteSettings(opts ...ExecuteOption) (settings *executeSettings) {
114-
settings = &executeSettings{
121+
func ExecuteSettings(opts ...ExecuteOption) (settings *Execute) {
122+
settings = &Execute{
115123
commonExecuteSettings: defaultCommonExecuteSettings(),
116124
}
117125
settings.commonExecuteSettings = defaultCommonExecuteSettings()
118-
settings.txControl = DefaultTxControl()
126+
settings.txControl = tx.DefaultTxControl()
119127
for _, opt := range opts {
120128
opt.applyExecuteOption(settings)
121129
}
122130

123131
return settings
124132
}
125133

126-
func (s *executeSettings) TxControl() *TransactionControl {
134+
func (s *Execute) TxControl() *tx.Control {
127135
return s.txControl
128136
}
129137

138+
func (s *Execute) SetTxControl(ctrl *tx.Control) {
139+
s.txControl = ctrl
140+
}
141+
130142
func (s *commonExecuteSettings) CallOptions() []grpc.CallOption {
131143
return s.callOptions
132144
}
@@ -153,7 +165,7 @@ func (s *commonExecuteSettings) Params() *params.Parameters {
153165

154166
func TxExecuteSettings(id string, opts ...TxExecuteOption) (settings *txExecuteSettings) {
155167
settings = &txExecuteSettings{
156-
ExecuteSettings: ExecuteSettings(WithTxControl(TxControl(WithTxID(id)))),
168+
ExecuteSettings: ExecuteSettings(WithTxControl(tx.NewControl(tx.WithTxID(id)))),
157169
}
158170
for _, opt := range opts {
159171
opt.applyTxExecuteOption(settings)
@@ -176,6 +188,7 @@ var (
176188
_ TxExecuteOption = ExecMode(0)
177189
_ TxExecuteOption = StatsMode(0)
178190
_ TxExecuteOption = txCommitOption{}
191+
_ ExecuteOption = txControlOption{}
179192
)
180193

181194
func WithCommit() txCommitOption {
@@ -198,8 +211,6 @@ func WithCallOptions(opts ...grpc.CallOption) callOptions {
198211
return opts
199212
}
200213

201-
func WithTxControl(txControl *TransactionControl) *transactionControlOption {
202-
return &transactionControlOption{
203-
txControl: txControl,
204-
}
214+
func WithTxControl(txControl *tx.Control) txControlOption {
215+
return txControlOption{txControl}
205216
}

0 commit comments

Comments
 (0)