[功能] 调整访问日志分页大小为20,并更新相关组件以支持动态分页

This commit is contained in:
ryan
2026-03-18 09:52:39 +08:00
parent 70da7c772c
commit 2e875f583b
6 changed files with 87 additions and 7 deletions
+14 -2
View File
@@ -7,7 +7,7 @@ import (
)
const (
defaultAccessLogPageSize = 50
defaultAccessLogPageSize = 20
maxAccessLogPageSize = 200
)
@@ -51,7 +51,19 @@ func ListAccessLogs(nodeID string, page int, pageSize int) (*AccessLogList, erro
if err != nil {
return nil, err
}
nodes, err := model.ListNodes()
nodeIDs := make([]string, 0, len(logs))
seenNodeIDs := make(map[string]struct{}, len(logs))
for _, item := range logs {
if item == nil {
continue
}
if _, exists := seenNodeIDs[item.NodeID]; exists {
continue
}
seenNodeIDs[item.NodeID] = struct{}{}
nodeIDs = append(nodeIDs, item.NodeID)
}
nodes, err := model.ListNodesByNodeIDs(nodeIDs)
if err != nil {
return nil, err
}
@@ -98,3 +98,44 @@ func TestListAccessLogsIncludesSummaryTotals(t *testing.T) {
t.Fatalf("expected filtered items=2, got %d", len(filtered.Items))
}
}
func TestListAccessLogsUsesDefaultPageSize(t *testing.T) {
setupServiceTestDB(t)
now := time.Now()
if err := model.DB.Create(&model.Node{
NodeID: "node-default-page-size",
Name: "edge-default-page-size",
}).Error; err != nil {
t.Fatalf("failed to seed node: %v", err)
}
logs := make([]*model.NodeAccessLog, 0, 25)
for index := range 25 {
logs = append(logs, &model.NodeAccessLog{
NodeID: "node-default-page-size",
LoggedAt: now.Add(-time.Duration(index) * time.Minute),
RemoteAddr: "1.1.1.1",
Host: "example.com",
Path: "/default-page-size",
StatusCode: 200,
})
}
if err := model.DB.Create(&logs).Error; err != nil {
t.Fatalf("failed to seed access logs: %v", err)
}
result, err := ListAccessLogs("", 0, 0)
if err != nil {
t.Fatalf("ListAccessLogs failed: %v", err)
}
if result.PageSize != 20 {
t.Fatalf("expected default page_size=20, got %d", result.PageSize)
}
if len(result.Items) != 20 {
t.Fatalf("expected current page items=20, got %d", len(result.Items))
}
if !result.HasMore {
t.Fatal("expected has_more to be true")
}
}