46 lines
862 B
Go
46 lines
862 B
Go
package web
|
|
|
|
import (
|
|
"net/http"
|
|
"pool-stats/database"
|
|
"pool-stats/models"
|
|
"strconv"
|
|
)
|
|
|
|
type SharePageData struct {
|
|
PageDataBase
|
|
|
|
Shares []models.ShareLog
|
|
Page int
|
|
HasMore bool
|
|
}
|
|
|
|
func (ws *WebServer) SharesHandler(w http.ResponseWriter, r *http.Request) {
|
|
entriesPerPage := 10
|
|
page := r.URL.Query().Get("page")
|
|
if page == "" {
|
|
page = "1"
|
|
}
|
|
|
|
offset, err := strconv.Atoi(page)
|
|
if err != nil || offset < 1 {
|
|
http.Error(w, "Invalid page number", 400)
|
|
return
|
|
}
|
|
|
|
offset = (offset - 1) * entriesPerPage
|
|
shareLogs := database.ListShares(ws.db, offset, entriesPerPage)
|
|
if shareLogs == nil {
|
|
http.Error(w, "Failed to load shares", 500)
|
|
return
|
|
}
|
|
|
|
data := SharePageData{
|
|
Shares: shareLogs,
|
|
Page: offset/entriesPerPage + 1,
|
|
HasMore: len(shareLogs) == entriesPerPage,
|
|
}
|
|
|
|
ws.renderTemplate(w, r, "templates/shares.html", &data)
|
|
}
|