Skip to content

Commit b61f440

Browse files
committed
feat: search for server and client
1 parent e32004f commit b61f440

File tree

18 files changed

+370
-207
lines changed

18 files changed

+370
-207
lines changed

biz/master/client/list_client.go

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,32 @@ func ListClientsHandler(ctx context.Context, req *pb.ListClientsRequest) (*pb.Li
2424
}, nil
2525
}
2626

27-
page := int(req.GetPage())
28-
pageSize := int(req.GetPageSize())
29-
clients, err := dao.ListClients(userInfo, page, pageSize)
27+
var (
28+
page = int(req.GetPage())
29+
pageSize = int(req.GetPageSize())
30+
keyword = req.GetKeyword()
31+
clients []*models.ClientEntity
32+
err error
33+
clientCounts int64
34+
hasKeyword = len(keyword) > 0
35+
)
36+
37+
if hasKeyword {
38+
clients, err = dao.ListClientsWithKeyword(userInfo, page, pageSize, keyword)
39+
} else {
40+
clients, err = dao.ListClients(userInfo, page, pageSize)
41+
}
42+
3043
if err != nil {
3144
return nil, err
3245
}
3346

34-
clientCounts, err := dao.CountClients(userInfo)
47+
if hasKeyword {
48+
clientCounts, err = dao.CountClientsWithKeyword(userInfo, keyword)
49+
} else {
50+
clientCounts, err = dao.CountClients(userInfo)
51+
}
52+
3553
if err != nil {
3654
return nil, err
3755
}

biz/master/platform/get_platform_info.go

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,16 +33,6 @@ func getPlatformInfo(c *gin.Context) (*pb.GetPlatformInfoResponse, error) {
3333
return nil, err
3434
}
3535

36-
unconfiguredServers, err := dao.CountUnconfiguredServers(userInfo)
37-
if err != nil {
38-
return nil, err
39-
}
40-
41-
unconfiguredClients, err := dao.CountUnconfiguredClients(userInfo)
42-
if err != nil {
43-
return nil, err
44-
}
45-
4636
configuredServers, err := dao.CountConfiguredServers(userInfo)
4737
if err != nil {
4838
return nil, err
@@ -51,6 +41,11 @@ func getPlatformInfo(c *gin.Context) (*pb.GetPlatformInfoResponse, error) {
5141
if err != nil {
5242
return nil, err
5343
}
44+
45+
unconfiguredServers := totalServers - configuredServers
46+
47+
unconfiguredClients := totalClients - configuredClients
48+
5449
return &pb.GetPlatformInfoResponse{
5550
Status: &pb.Status{Code: pb.RespCode_RESP_CODE_SUCCESS, Message: "ok"},
5651
TotalClientCount: int32(totalClients),

biz/master/server/list_server.go

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,14 @@ import (
1212

1313
func ListServersHandler(c context.Context, req *pb.ListServersRequest) (*pb.ListServersResponse, error) {
1414
var (
15-
userInfo = common.GetUserInfo(c)
16-
page = int(req.GetPage())
17-
pageSize = int(req.GetPageSize())
15+
userInfo = common.GetUserInfo(c)
16+
page = int(req.GetPage())
17+
pageSize = int(req.GetPageSize())
18+
keyword = req.GetKeyword()
19+
servers []*models.ServerEntity
20+
serverCounts int64
21+
hasKeyword = len(keyword) > 0
22+
err error
1823
)
1924

2025
if !userInfo.Valid() {
@@ -23,12 +28,20 @@ func ListServersHandler(c context.Context, req *pb.ListServersRequest) (*pb.List
2328
}, nil
2429
}
2530

26-
servers, err := dao.ListServers(userInfo, page, pageSize)
31+
if hasKeyword {
32+
servers, err = dao.ListServersWithKeyword(userInfo, page, pageSize, keyword)
33+
} else {
34+
servers, err = dao.ListServers(userInfo, page, pageSize)
35+
}
2736
if err != nil {
2837
return nil, err
2938
}
3039

31-
serverCounts, err := dao.CountServers(userInfo)
40+
if hasKeyword {
41+
serverCounts, err = dao.CountServersWithKeyword(userInfo, keyword)
42+
} else {
43+
serverCounts, err = dao.CountServers(userInfo)
44+
}
3245
if err != nil {
3346
return nil, err
3447
}

codegen.sh

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
#!/usr/bin/env /bin/bash
22

3-
cd idl && protoc *.proto --go_out=. --go-grpc_out=. && cd ..
4-
cd www && npx protoc --ts_out ./lib/pb -I ../idl --proto_path ../idl/common.proto ../idl/common.proto ../idl/api*.proto && cd ..
3+
PROTOC_PATH=$(whereis protoc | awk '{print $2}')
4+
5+
cd idl && $PROTOC_PATH *.proto --go_out=. --go-grpc_out=. && cd ..
6+
cd www && npx $PROTOC_PATH --ts_out ./lib/pb -I ../idl --proto_path ../idl/common.proto ../idl/common.proto ../idl/api*.proto && cd ..

dao/client.go

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,30 @@ func ListClients(userInfo models.UserInfo, page, pageSize int) ([]*models.Client
128128
}), nil
129129
}
130130

131+
func ListClientsWithKeyword(userInfo models.UserInfo, page, pageSize int, keyword string) ([]*models.ClientEntity, error) {
132+
if page < 1 || pageSize < 1 || len(keyword) == 0 {
133+
return nil, fmt.Errorf("invalid page or page size or keyword")
134+
}
135+
136+
db := models.GetDBManager().GetDefaultDB()
137+
offset := (page - 1) * pageSize
138+
139+
var clients []*models.Client
140+
err := db.Where(&models.Client{
141+
ClientEntity: &models.ClientEntity{
142+
UserID: userInfo.GetUserID(),
143+
TenantID: userInfo.GetTenantID(),
144+
},
145+
}).Where("client_id like ?", "%"+keyword+"%").Offset(offset).Limit(pageSize).Find(&clients).Error
146+
if err != nil {
147+
return nil, err
148+
}
149+
150+
return lo.Map(clients, func(c *models.Client, _ int) *models.ClientEntity {
151+
return c.ClientEntity
152+
}), nil
153+
}
154+
131155
func GetAllClients(userInfo models.UserInfo) ([]*models.ClientEntity, error) {
132156
db := models.GetDBManager().GetDefaultDB()
133157
var clients []*models.Client
@@ -161,16 +185,15 @@ func CountClients(userInfo models.UserInfo) (int64, error) {
161185
return count, nil
162186
}
163187

164-
func CountUnconfiguredClients(userInfo models.UserInfo) (int64, error) {
188+
func CountClientsWithKeyword(userInfo models.UserInfo, keyword string) (int64, error) {
165189
db := models.GetDBManager().GetDefaultDB()
166190
var count int64
167191
err := db.Model(&models.Client{}).Where(&models.Client{
168192
ClientEntity: &models.ClientEntity{
169-
UserID: userInfo.GetUserID(),
170-
TenantID: userInfo.GetTenantID(),
171-
ConfigContent: []byte{},
193+
UserID: userInfo.GetUserID(),
194+
TenantID: userInfo.GetTenantID(),
172195
},
173-
}).Count(&count).Error
196+
}).Where("client_id like ?", "%"+keyword+"%").Count(&count).Error
174197
if err != nil {
175198
return 0, err
176199
}

dao/server.go

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,33 @@ func ListServers(userInfo models.UserInfo, page, pageSize int) ([]*models.Server
187187
}), nil
188188
}
189189

190+
func ListServersWithKeyword(userInfo models.UserInfo, page, pageSize int, keyword string) ([]*models.ServerEntity, error) {
191+
if page < 1 || pageSize < 1 || len(keyword) == 0 {
192+
return nil, fmt.Errorf("invalid page or page size or keyword")
193+
}
194+
195+
db := models.GetDBManager().GetDefaultDB()
196+
offset := (page - 1) * pageSize
197+
198+
var servers []*models.Server
199+
err := db.Where(
200+
&models.Server{
201+
ServerEntity: &models.ServerEntity{
202+
UserID: userInfo.GetUserID(),
203+
TenantID: userInfo.GetTenantID(),
204+
},
205+
},
206+
).Where("server_id like ?", "%"+keyword+"%").
207+
Offset(offset).Limit(pageSize).Find(&servers).Error
208+
if err != nil {
209+
return nil, err
210+
}
211+
212+
return lo.Map(servers, func(c *models.Server, _ int) *models.ServerEntity {
213+
return c.ServerEntity
214+
}), nil
215+
}
216+
190217
func CountServers(userInfo models.UserInfo) (int64, error) {
191218
db := models.GetDBManager().GetDefaultDB()
192219
var count int64
@@ -204,18 +231,17 @@ func CountServers(userInfo models.UserInfo) (int64, error) {
204231
return count, nil
205232
}
206233

207-
func CountUnconfiguredServers(userInfo models.UserInfo) (int64, error) {
234+
func CountServersWithKeyword(userInfo models.UserInfo, keyword string) (int64, error) {
208235
db := models.GetDBManager().GetDefaultDB()
209236
var count int64
210237
err := db.Model(&models.Server{}).Where(
211238
&models.Server{
212239
ServerEntity: &models.ServerEntity{
213-
UserID: userInfo.GetUserID(),
214-
TenantID: userInfo.GetTenantID(),
215-
ConfigContent: []byte{},
240+
UserID: userInfo.GetUserID(),
241+
TenantID: userInfo.GetTenantID(),
216242
},
217243
},
218-
).Count(&count).Error
244+
).Where("server_id like ?", "%"+keyword+"%").Count(&count).Error
219245
if err != nil {
220246
return 0, err
221247
}

idl/api_client.proto

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ message InitClientResponse {
1717
message ListClientsRequest {
1818
optional int32 page = 1;
1919
optional int32 page_size = 2;
20+
optional string keyword = 3;
2021
}
2122

2223
message ListClientsResponse {

idl/api_server.proto

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ message InitServerResponse {
1818
message ListServersRequest {
1919
optional int32 page = 1;
2020
optional int32 page_size = 2;
21+
optional string keyword = 3;
2122
}
2223

2324
message ListServersResponse {

0 commit comments

Comments
 (0)