@@ -36,7 +36,6 @@ import (
36
36
enumspb "go.temporal.io/api/enums/v1"
37
37
"go.temporal.io/server/common/namespace"
38
38
"go.temporal.io/server/common/persistence/sql/sqlplugin"
39
- "go.temporal.io/server/common/persistence/visibility/manager"
40
39
"go.temporal.io/server/common/persistence/visibility/store/query"
41
40
"go.temporal.io/server/common/searchattribute"
42
41
)
@@ -54,16 +53,20 @@ type (
54
53
token * pageToken ,
55
54
) (string , []any )
56
55
56
+ buildCountStmt (namespaceID namespace.ID , queryString string ) (string , []any )
57
+
57
58
getDatetimeFormat () string
58
59
59
60
getCoalesceCloseTimeExpr () sqlparser.Expr
60
61
}
61
62
62
63
QueryConverter struct {
63
64
pluginQueryConverter
64
- request * manager.ListWorkflowExecutionsRequestV2
65
- saTypeMap searchattribute.NameTypeMap
66
- saMapper searchattribute.Mapper
65
+ namespaceName namespace.Name
66
+ namespaceID namespace.ID
67
+ saTypeMap searchattribute.NameTypeMap
68
+ saMapper searchattribute.Mapper
69
+ queryString string
67
70
68
71
seenNamespaceDivision bool
69
72
}
@@ -114,38 +117,57 @@ var (
114
117
115
118
func newQueryConverterInternal (
116
119
pqc pluginQueryConverter ,
117
- request * manager.ListWorkflowExecutionsRequestV2 ,
120
+ namespaceName namespace.Name ,
121
+ namespaceID namespace.ID ,
118
122
saTypeMap searchattribute.NameTypeMap ,
119
123
saMapper searchattribute.Mapper ,
124
+ queryString string ,
120
125
) * QueryConverter {
121
126
return & QueryConverter {
122
127
pluginQueryConverter : pqc ,
123
- request : request ,
128
+ namespaceName : namespaceName ,
129
+ namespaceID : namespaceID ,
124
130
saTypeMap : saTypeMap ,
125
131
saMapper : saMapper ,
132
+ queryString : queryString ,
126
133
127
134
seenNamespaceDivision : false ,
128
135
}
129
136
}
130
137
131
- func (c * QueryConverter ) BuildSelectStmt () (* sqlplugin.VisibilitySelectFilter , error ) {
132
- token , err := deserializePageToken (c .request .NextPageToken )
138
+ func (c * QueryConverter ) BuildSelectStmt (
139
+ pageSize int ,
140
+ nextPageToken []byte ,
141
+ ) (* sqlplugin.VisibilitySelectFilter , error ) {
142
+ token , err := deserializePageToken (nextPageToken )
133
143
if err != nil {
134
144
return nil , err
135
145
}
136
- queryString , err := c .convertWhereString (c .request . Query )
146
+ queryString , err := c .convertWhereString (c .queryString )
137
147
if err != nil {
138
148
return nil , err
139
149
}
140
150
queryString , queryArgs := c .buildSelectStmt (
141
- c .request . NamespaceID ,
151
+ c .namespaceID ,
142
152
queryString ,
143
- c . request . PageSize ,
153
+ pageSize ,
144
154
token ,
145
155
)
146
156
return & sqlplugin.VisibilitySelectFilter {Query : queryString , QueryArgs : queryArgs }, nil
147
157
}
148
158
159
+ func (c * QueryConverter ) BuildCountStmt () (* sqlplugin.VisibilitySelectFilter , error ) {
160
+ queryString , err := c .convertWhereString (c .queryString )
161
+ if err != nil {
162
+ return nil , err
163
+ }
164
+ queryString , queryArgs := c .buildCountStmt (
165
+ c .namespaceID ,
166
+ queryString ,
167
+ )
168
+ return & sqlplugin.VisibilitySelectFilter {Query : queryString , QueryArgs : queryArgs }, nil
169
+ }
170
+
149
171
func (c * QueryConverter ) convertWhereString (queryString string ) (string , error ) {
150
172
where := strings .TrimSpace (queryString )
151
173
if where != "" && ! strings .HasPrefix (strings .ToLower (where ), "order by" ) {
@@ -376,7 +398,7 @@ func (c *QueryConverter) convertColName(
376
398
saFieldName = saAlias
377
399
if searchattribute .IsMappable (saAlias ) {
378
400
var err error
379
- saFieldName , err = c .saMapper .GetFieldName (saAlias , c .request . Namespace .String ())
401
+ saFieldName , err = c .saMapper .GetFieldName (saAlias , c .namespaceName .String ())
380
402
if err != nil {
381
403
return "" , "" , err
382
404
}
0 commit comments