mirror of
https://github.com/komari-monitor/komari.git
synced 2026-11-11 08:42:39 +00:00
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/api"
|
|
"github.com/komari-monitor/komari/database/dbcore"
|
|
"github.com/komari-monitor/komari/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 {
|
|
api.RespondError(c, 400, "Invalid limit: "+limit)
|
|
return
|
|
}
|
|
pageInt, err := strconv.Atoi(page)
|
|
if err != nil || pageInt <= 0 {
|
|
api.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 {
|
|
api.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 {
|
|
api.RespondError(c, 500, "Failed to retrieve logs: "+err.Error())
|
|
return
|
|
}
|
|
api.RespondSuccess(c, gin.H{"logs": logs, "total": total})
|
|
}
|