31 lines
802 B
Go
31 lines
802 B
Go
package handler
|
|
|
|
import (
|
|
"github.com/a-h/templ"
|
|
"github.com/labstack/echo/v4"
|
|
"sh.org.ru/pkg/model"
|
|
"sh.org.ru/pkg/tpl"
|
|
)
|
|
|
|
func (h *Handler) Random(c echo.Context) error {
|
|
quotes := make([]model.Quote, 0, 20)
|
|
err := h.DB.NewRaw(`select q.* from quotes q where q.approved = true order by random() limit 20`).
|
|
Scan(c.Request().Context(), "es)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
comp := tpl.Random(quotes)
|
|
|
|
if c.Request().Header.Get("Hx-Request") == "true" {
|
|
return comp.Render(c.Request().Context(), c.Response())
|
|
}
|
|
|
|
ctx := templ.WithChildren(c.Request().Context(), comp)
|
|
|
|
return tpl.Layout(tpl.HeaderParams{
|
|
Title: "Цитатник Рунета",
|
|
Description: "Новый цитатник Рунета",
|
|
URL: "https://sh.org.ru/",
|
|
}).Render(ctx, c.Response())
|
|
}
|