mirror of
https://github.com/gazer-x/komari.git
synced 2026-06-22 00:05:52 +08:00
90aad4b48a
- Moved API route registration to dedicated init files for better organization. - Introduced event listeners for server initialization to dynamically register routes. - Removed redundant configuration loading in routers.go. - Added new API routes for various functionalities including client management, admin tasks, and notifications. - Implemented a standardized response structure for API responses. - Established WebSocket connections for terminal sessions and improved session management. - Created a new database initialization for default admin account creation. - Enhanced gRPC server setup for Nezha compatibility with dynamic configuration updates.
50 lines
1.3 KiB
Go
50 lines
1.3 KiB
Go
package log
|
|
|
|
import (
|
|
"strconv"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/komari-monitor/komari/internal/api_v1/resp"
|
|
"github.com/komari-monitor/komari/internal/database/dbcore"
|
|
"github.com/komari-monitor/komari/internal/database/models"
|
|
)
|
|
|
|
func GetLogs(c *gin.Context) {
|
|
limit := c.Query("limit")
|
|
if limit == "" {
|
|
limit = "100" // Default to 100 logs if not specified
|
|
}
|
|
page := c.Query("page")
|
|
if page == "" {
|
|
page = "1" // Default to page 1 if not specified
|
|
}
|
|
// Convert limit and page to integers
|
|
// If conversion fails, return an error
|
|
limitInt, err := strconv.Atoi(limit)
|
|
if err != nil || limitInt <= 0 {
|
|
resp.RespondError(c, 400, "Invalid limit: "+limit)
|
|
return
|
|
}
|
|
pageInt, err := strconv.Atoi(page)
|
|
if err != nil || pageInt <= 0 {
|
|
resp.RespondError(c, 400, "Invalid page: "+page)
|
|
return
|
|
}
|
|
db := dbcore.GetDBInstance()
|
|
var logs []models.Log
|
|
// 添加分页:计算偏移量并限制数量
|
|
offset := (pageInt - 1) * limitInt
|
|
|
|
var total int64
|
|
if err := db.Model(&models.Log{}).Count(&total).Error; err != nil {
|
|
resp.RespondError(c, 500, "Failed to count logs: "+err.Error())
|
|
return
|
|
}
|
|
|
|
if err := db.Order("time desc").Limit(limitInt).Offset(offset).Find(&logs).Error; err != nil {
|
|
resp.RespondError(c, 500, "Failed to retrieve logs: "+err.Error())
|
|
return
|
|
}
|
|
resp.RespondSuccess(c, gin.H{"logs": logs, "total": total})
|
|
}
|