aboutsummaryrefslogtreecommitdiff
path: root/pkg/handler/quote/top.go
blob: c2803eae621cb93b394460eb3e9030412ee3424e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package quote

import (
	"github.com/labstack/echo/v4"
	"sh.org.ru/pkg/model"
	"sh.org.ru/pkg/tpl"
)

func (h *Handler) Top(c echo.Context) error {
	p := &Pagination{}
	if err := c.Bind(p); err != nil {
		return err
	}

	quotes := make([]model.Quote, 0, 20)
	count, err := h.db.NewSelect().
		Model((*model.Quote)(nil)).
		Order("rating DESC").
		Where("approved = ?", true).
		Limit(20).
		Offset(p.Page*20).
		ScanAndCount(c.Request().Context(), &quotes)
	if err != nil {
		return err
	}

	return tpl.List(quotes, p.Page, count).Render(c.Request().Context(), c.Response())
}