aboutsummaryrefslogblamecommitdiff
path: root/pkg/handler/random.go
blob: 29c5f6f995c3c6c1adf645ad53559e3d73b33d29 (plain) (tree)
1
2
3
4


               
                              












                                                                                                          












                                                                        
 
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(), &quotes)
	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())
}