Skip to content

Commit 0ba77d4

Browse files
author
Cairry
committed
✨ Add pagination for topology
1 parent 00078f1 commit 0ba77d4

3 files changed

Lines changed: 28 additions & 10 deletions

File tree

internal/repo/topology.go

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
package repo
22

33
import (
4-
"gorm.io/gorm"
54
"watchAlert/internal/models"
5+
6+
"gorm.io/gorm"
67
)
78

89
type (
@@ -14,7 +15,7 @@ type (
1415
Create(params models.Topology) error
1516
Update(params models.Topology) error
1617
Delete(tenantId, id string) error
17-
List(tenantId, query string) ([]models.TopologyList, error)
18+
List(tenantId, query string, page models.Page) ([]models.TopologyList, int64, error)
1819
Get(tenantId, id string) (models.Topology, error)
1920
GetDetail(tenantId, id string) (models.Topology, error)
2021
}
@@ -68,10 +69,11 @@ func (t topologyRepo) Delete(tenantId, id string) error {
6869
return nil
6970
}
7071

71-
func (t topologyRepo) List(tenantId, query string) ([]models.TopologyList, error) {
72+
func (t topologyRepo) List(tenantId, query string, page models.Page) ([]models.TopologyList, int64, error) {
7273
var (
73-
data []models.TopologyList
74-
db = t.db.Model(&models.Topology{})
74+
data []models.TopologyList
75+
db = t.db.Model(&models.Topology{})
76+
count int64
7577
)
7678

7779
if tenantId != "" {
@@ -81,12 +83,14 @@ func (t topologyRepo) List(tenantId, query string) ([]models.TopologyList, error
8183
db.Where("name LIKE ? OR id LIKE ?", "%"+query+"%", "%"+query+"%")
8284
}
8385

86+
db.Count(&count)
87+
db.Limit(int(page.Size)).Offset(int((page.Index - 1) * page.Size))
8488
err := db.Find(&data).Error
8589
if err != nil {
86-
return nil, err
90+
return nil, 0, err
8791
}
8892

89-
return data, nil
93+
return data, count, nil
9094
}
9195

9296
func (t topologyRepo) Get(tenantId, id string) (models.Topology, error) {
@@ -112,4 +116,4 @@ func (t topologyRepo) Get(tenantId, id string) (models.Topology, error) {
112116
// GetDetail 获取拓扑的完整信息,包括nodes和edges
113117
func (t topologyRepo) GetDetail(tenantId, id string) (models.Topology, error) {
114118
return t.Get(tenantId, id)
115-
}
119+
}

internal/services/topology.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,19 @@ func (t topologyService) Delete(req interface{}) (data interface{}, err interfac
8686

8787
func (t topologyService) List(req interface{}) (data interface{}, err interface{}) {
8888
r := req.(*types.RequestTopologyQuery)
89-
data, err = t.ctx.DB.Topology().List(r.TenantId, r.Query)
89+
list, count, err := t.ctx.DB.Topology().List(r.TenantId, r.Query, r.Page)
9090
if err != nil {
9191
return nil, err
9292
}
93-
return data, nil
93+
94+
return types.ResponseTopologyList{
95+
List: list,
96+
Page: models.Page{
97+
Total: count,
98+
Index: r.Page.Index,
99+
Size: r.Page.Size,
100+
},
101+
}, nil
94102
}
95103

96104
// GetDetail 获取拓扑的完整信息,包括nodes和edges

internal/types/topology.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,16 @@ type RequestTopologyQuery struct {
2929
ID string `form:"id"`
3030
Name string `form:"name"`
3131
Query string `form:"query"`
32+
models.Page
3233
}
3334

3435
// RequestTopologyDelete 请求删除拓扑图
3536
type RequestTopologyDelete struct {
3637
TenantId string `json:"tenantId"`
3738
ID string `json:"id"`
3839
}
40+
41+
type ResponseTopologyList struct {
42+
List []models.TopologyList `json:"list"`
43+
models.Page
44+
}

0 commit comments

Comments
 (0)