Skip to content

Commit 834a29a

Browse files
committed
style: format code annotations and fix lint fail.
Signed-off-by: adam <[email protected]>
1 parent d3d6925 commit 834a29a

File tree

15 files changed

+67
-74
lines changed

15 files changed

+67
-74
lines changed

cmd/karpor/app/syncer.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ package app
1616

1717
import (
1818
"context"
19+
1920
"github.com/KusionStack/karpor/pkg/kubernetes/registry"
2021
"github.com/KusionStack/karpor/pkg/kubernetes/registry/search"
2122
"github.com/KusionStack/karpor/pkg/kubernetes/scheme"
@@ -82,8 +83,6 @@ func run(ctx context.Context, options *syncerOptions) error {
8283
SearchUsername: options.SearchUsername,
8384
SearchPassword: options.SearchPassword,
8485
})
85-
//nolint:contextcheck
86-
8786
if err != nil {
8887
log.Error(err, "unable to init elasticsearch client")
8988
return err

pkg/core/handler/resourcegroup/resource_group.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,10 @@
1515
package resourcegroup
1616

1717
import (
18-
"github.com/KusionStack/karpor/pkg/infra/search/storage"
1918
"net/http"
2019

20+
"github.com/KusionStack/karpor/pkg/infra/search/storage"
21+
2122
"github.com/KusionStack/karpor/pkg/core/handler"
2223
"github.com/KusionStack/karpor/pkg/core/manager/resourcegroup"
2324
"github.com/KusionStack/karpor/pkg/util/ctxutil"

pkg/core/handler/resourcegrouprule/resource_group_rule.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,10 @@
1515
package resourcegrouprule
1616

1717
import (
18-
"github.com/KusionStack/karpor/pkg/infra/search/storage"
1918
"net/http"
2019

20+
"github.com/KusionStack/karpor/pkg/infra/search/storage"
21+
2122
"github.com/KusionStack/karpor/pkg/core/handler"
2223
"github.com/KusionStack/karpor/pkg/core/manager/resourcegroup"
2324
"github.com/KusionStack/karpor/pkg/util/ctxutil"

pkg/infra/persistence/meilisearch/client.go

+1-4
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@
1212
// See the License for the specific language governing permissions and
1313
// limitations under the License.
1414

15-
//nolint:tagliatelle
1615
package meilisearch
1716

1817
import (
1918
"context"
2019
"fmt"
20+
2121
"github.com/meilisearch/meilisearch-go"
2222
)
2323

@@ -28,7 +28,6 @@ type Client struct {
2828

2929
// NewClient creates a new Elasticsearch client instance
3030
func NewClient(address string, key string) (*Client, error) {
31-
3231
cl := meilisearch.New(address, meilisearch.WithAPIKey(key))
3332
return &Client{client: cl}, nil
3433
}
@@ -126,15 +125,13 @@ func (cl *Client) Count(
126125
ctx context.Context,
127126
indexName string,
128127
) (*CountResponse, error) {
129-
130128
resp, err := cl.client.Index(indexName).GetStatsWithContext(ctx)
131129
if err != nil {
132130
return nil, err
133131
}
134132
return &CountResponse{
135133
Count: resp.NumberOfDocuments,
136134
}, nil
137-
138135
}
139136

140137
// CreateIndex creates a new index with the specified settings and mappings,PrimaryKey is id by default

pkg/infra/persistence/meilisearch/types.go

-2
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@ import (
2222
const (
2323
// maxAggSize defines the maximum number of aggregation buckets that can be returned in an aggregation query.
2424
maxAggSize = 10000
25-
// maxHitsSize defines the maximum number of search hits to be returned in a search query response.
26-
maxHitsSize = 1000
2725
)
2826

2927
type paginationConfig struct {

pkg/infra/search/storage/meilisearch/client.go

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ package meilisearch
1717
import (
1818
"context"
1919
"fmt"
20+
2021
"github.com/KusionStack/karpor/pkg/core/entity"
2122
"github.com/KusionStack/karpor/pkg/infra/persistence/meilisearch"
2223
"github.com/KusionStack/karpor/pkg/infra/search/storage"

pkg/infra/search/storage/meilisearch/convert.go

+29-24
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,27 @@
1-
/**
2-
* @Author: Adam wu
3-
* @Description:
4-
* @File: convert.go
5-
* @Version: 1.0.0
6-
* @Date: 2025/3/21
7-
*/
1+
// Copyright The Karpor Authors.
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
814

915
package meilisearch
1016

1117
import (
1218
"fmt"
19+
"strings"
20+
"time"
21+
1322
"github.com/KusionStack/karpor/pkg/infra/persistence/meilisearch"
1423
"github.com/xwb1989/sqlparser"
1524
"k8s.io/apimachinery/pkg/util/sets"
16-
"strings"
17-
"time"
1825
)
1926

2027
var DefaultFilter = []string{"deleted = false"}
@@ -46,26 +53,26 @@ func ConvertWithDefaultFilter(sql string, defaultFilter []string) (*meilisearch.
4653
return nil, "", fmt.Errorf("only single table queries are supported")
4754
}
4855

49-
// 应用默认过滤器
56+
// apply the default filter
5057
sel = applyDefaultFilter(sel, defaultFilter)
5158

52-
// 获取表名
59+
// obtain the table name
5360
tableName := strings.ReplaceAll(sqlparser.String(sel.From), "`", "")
5461

55-
// 构建搜索请求
62+
// build a search request
5663
req := &meilisearch.SearchRequest{
57-
Limit: 1000, //by default
64+
Limit: 1000, // by default
5865
Offset: 0,
5966
}
6067

61-
// 处理WHERE条件
68+
// handle the where condition
6269
filter, err := buildFilter(sel.Where)
6370
if err != nil {
6471
return nil, "", err
6572
}
6673
req.Filter = filter
6774

68-
// 处理LIMIT/OFFSET
75+
// deal with LIMIT/OFFSET
6976
if sel.Limit != nil {
7077
if offset, ok := sel.Limit.Offset.(*sqlparser.SQLVal); ok {
7178
req.Offset = parseInt(string(offset.Val))
@@ -75,7 +82,7 @@ func ConvertWithDefaultFilter(sql string, defaultFilter []string) (*meilisearch.
7582
}
7683
}
7784

78-
// 处理ORDER BY
85+
// deal with ORDER BY
7986
if len(sel.OrderBy) > 0 {
8087
sort := make([]string, 0, len(sel.OrderBy))
8188
for _, order := range sel.OrderBy {
@@ -118,7 +125,7 @@ func buildFilterRecursive(expr sqlparser.Expr) (interface{}, error) {
118125
return fmt.Sprintf("(%s) OR (%s)", left, right), nil
119126

120127
case *sqlparser.ComparisonExpr:
121-
return buildComparisonFilter(e)
128+
return buildComparisonFilter(e), nil
122129

123130
case *sqlparser.ParenExpr:
124131
return buildFilterRecursive(e.Expr)
@@ -131,10 +138,10 @@ func buildFilterRecursive(expr sqlparser.Expr) (interface{}, error) {
131138
}
132139
}
133140

134-
func buildComparisonFilter(expr *sqlparser.ComparisonExpr) (string, error) {
141+
func buildComparisonFilter(expr *sqlparser.ComparisonExpr) string {
135142
field := strings.Trim(sqlparser.String(expr.Left), "`")
136143
op, value := extractOperatorAndValue(field, expr.Operator, expr.Right)
137-
return fmt.Sprintf("%s %s %s", field, op, value), nil
144+
return fmt.Sprintf("%s %s %s", field, op, value)
138145
}
139146

140147
func buildRangeFilter(expr *sqlparser.RangeCond) (string, error) {
@@ -180,7 +187,6 @@ func extractLikeOperatorByValue(op, val string) string {
180187

181188
// trimLikeValue trim string like '%abc%' to 'abc'
182189
func trimLikeValue(val string) string {
183-
184190
bs := []byte(val)
185191
newBytes := make([]byte, 0, len(bs))
186192
for i := 0; i < len(bs); i++ {
@@ -196,7 +202,7 @@ func extractOperatorAndValue(field, op string, expr sqlparser.Expr) (string, str
196202
op = strings.ToLower(op)
197203
val := extractValue(expr)
198204
switch op {
199-
//case sqlparser.EqualStr, sqlparser.GreaterEqualStr, sqlparser.GreaterThanStr, sqlparser.LessThanStr, sqlparser.LessEqualStr, sqlparser.NotEqualStr, sqlparser.InStr, sqlparser.NotInStr:
205+
// case sqlparser.EqualStr, sqlparser.GreaterEqualStr, sqlparser.GreaterThanStr, sqlparser.LessThanStr, sqlparser.LessEqualStr, sqlparser.NotEqualStr, sqlparser.InStr, sqlparser.NotInStr:
200206
// return strings.ToUpper(op), val
201207
case sqlparser.LikeStr, sqlparser.NotLikeStr:
202208
return extractLikeOperatorByValue(op, val), trimLikeValue(val)
@@ -263,13 +269,12 @@ func getFilterFields(where *sqlparser.Where) sets.Set[string] {
263269
}
264270

265271
_ = sqlparser.Walk(func(node sqlparser.SQLNode) (bool, error) {
266-
switch n := node.(type) {
267-
case *sqlparser.ColName:
272+
if n, ok := node.(*sqlparser.ColName); ok {
268273
fields.Insert(n.Name.String())
269274
}
275+
270276
return true, nil
271277
}, where)
272-
273278
return fields
274279
}
275280

pkg/infra/search/storage/meilisearch/index.go

+8-17
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,10 @@ const (
2222
)
2323

2424
var defaultResourceIndexSetting = &meilisearch.Settings{
25-
// 对应 ES 的 max_result_window
2625
Pagination: &meilisearch.Pagination{
27-
MaxTotalHits: 1_000_000, // 控制最大返回结果数
26+
MaxTotalHits: 1_000_000,
2827
},
2928

30-
// 对应 ES analysis.normalizer
3129
SortableAttributes: []string{
3230
"creationTimestamp",
3331
"deletionTimestamp",
@@ -42,15 +40,14 @@ var defaultResourceIndexSetting = &meilisearch.Settings{
4240
},
4341
},
4442

45-
// 对应 ES mappings.properties 字段配置
4643
FilterableAttributes: []string{
4744
"id",
4845
"cluster",
4946
"apiVersion",
50-
"kind", // 启用过滤和精确匹配
47+
"kind",
5148
"namespace",
5249
"name",
53-
"labels", // 扁平化字段过滤
50+
"labels",
5451
"annotations",
5552
"ownerReferences",
5653
"content",
@@ -60,10 +57,9 @@ var defaultResourceIndexSetting = &meilisearch.Settings{
6057
},
6158

6259
SearchableAttributes: []string{
63-
"content", // 全文搜索字段
60+
"content",
6461
},
6562

66-
// 对应 _source.excludes 排除字段
6763
DisplayedAttributes: []string{
6864
"cluster",
6965
"apiVersion",
@@ -77,16 +73,14 @@ var defaultResourceIndexSetting = &meilisearch.Settings{
7773
"ownerReferences",
7874
"resourceVersion",
7975
"content",
80-
// 排除 "custom" 字段
8176
},
8277
}
78+
8379
var defaultResourceGroupRuleIndexSetting = &meilisearch.Settings{
84-
// 对应 Elasticsearch 的 max_result_window
8580
Pagination: &meilisearch.Pagination{
86-
MaxTotalHits: 1000000, // 控制最大返回结果数
87-
}, // 控制最大返回结果数
81+
MaxTotalHits: 1000000,
82+
},
8883

89-
// 对应 mappings.properties 字段属性
9084
FilterableAttributes: []string{
9185
"id",
9286
"name",
@@ -100,8 +94,6 @@ var defaultResourceGroupRuleIndexSetting = &meilisearch.Settings{
10094
"deletedAt",
10195
},
10296

103-
// 对应 mappings._source.excludes
104-
// Meilisearch 无完全等效功能,但可通过以下方式近似实现
10597
DisplayedAttributes: []string{
10698
"id",
10799
"name",
@@ -110,6 +102,5 @@ var defaultResourceGroupRuleIndexSetting = &meilisearch.Settings{
110102
"createdAt",
111103
"updatedAt",
112104
"deletedAt",
113-
}, // 显式指定返回字段
114-
105+
},
115106
}

pkg/infra/search/storage/meilisearch/parse.go

+8-11
Original file line numberDiff line numberDiff line change
@@ -120,21 +120,21 @@ func ParseQueries(queries []storage.Query) ([]interface{}, error) {
120120
return filter, nil
121121
}
122122

123-
// ConvertToFilter map 转换为 Meilisearch 等值过滤器
124-
// 输入示例:
123+
// ConvertToFilter convert the map to a meilisearch equivalent filter
124+
// Input:
125125
//
126126
// {
127127
// "category": "electronics",
128128
// "tags": ["a", "b"],
129129
// "author": {"name": "Alice"}
130130
// }
131131
//
132-
// 输出: ["category = 'electronics'", "tags IN ['a','b']", "author.name = 'Alice'"]
132+
// Output: ["category = 'electronics'", "tags IN ['a','b']", "author.name = 'Alice'"]
133133
func ConvertToFilter(query map[string]any) ([]any, error) {
134134
return processMap(query, "")
135135
}
136136

137-
// 递归处理嵌套 map
137+
// recursively handles nesting map
138138
func processMap(data map[string]any, parentKey string) ([]any, error) {
139139
var filters []any
140140

@@ -146,23 +146,20 @@ func processMap(data map[string]any, parentKey string) ([]any, error) {
146146

147147
switch v := value.(type) {
148148
case map[string]any:
149-
// 处理嵌套对象
150149
nestedFilters, err := processMap(v, fullKey)
151150
if err != nil {
152151
return nil, err
153152
}
154153
filters = append(filters, nestedFilters)
155154

156155
case []any:
157-
// 处理数组 (IN 查询)
158156
inClause, err := buildInClause(fullKey, v)
159157
if err != nil {
160158
return nil, err
161159
}
162160
filters = append(filters, inClause)
163161

164162
default:
165-
// 处理基本类型
166163
eqClause, err := buildEqualClause(fullKey, v)
167164
if err != nil {
168165
return nil, err
@@ -174,7 +171,7 @@ func processMap(data map[string]any, parentKey string) ([]any, error) {
174171
return filters, nil
175172
}
176173

177-
// 构建等值条件
174+
// build an equivalence condition
178175
func buildEqualClause(key string, value any) (string, error) {
179176
valueStr, err := convertValue(value)
180177
if err != nil {
@@ -183,9 +180,9 @@ func buildEqualClause(key string, value any) (string, error) {
183180
return fmt.Sprintf("%s = %s", key, valueStr), nil
184181
}
185182

186-
// 构建 IN 条件
183+
// build an in condition
187184
func buildInClause(key string, values []any) (string, error) {
188-
var elements []string
185+
elements := make([]string, 0, len(values))
189186
for _, v := range values {
190187
element, err := convertValue(v)
191188
if err != nil {
@@ -196,7 +193,7 @@ func buildInClause(key string, values []any) (string, error) {
196193
return fmt.Sprintf("%s IN [%s]", key, strings.Join(elements, ",")), nil
197194
}
198195

199-
// 值类型转换
196+
// value type conversion
200197
func convertValue(value any) (string, error) {
201198
switch v := value.(type) {
202199
case string:

0 commit comments

Comments
 (0)