dbots/internal/admin/router.go
2026-04-17 22:05:05 +02:00

46 lines
899 B
Go

package admin
import (
"net/http"
"codeberg.org/nextgo/dbots/internal/db"
"codeberg.org/nextgo/dbots/internal/errorutil"
"codeberg.org/nextgo/dbots/internal/paginate"
"github.com/go-chi/chi/v5"
"github.com/go-chi/render"
)
type Router struct {
admin *Service
router chi.Router
}
func NewRouter(q *db.Queries) *Router {
return &Router{
admin: NewService(q),
router: chi.NewRouter(),
}
}
func (r *Router) Routes() http.Handler {
r.router.Get("/bots", r.listBots)
r.router.Route("/bots", func(router chi.Router) {
})
return r.router
}
func (r *Router) listBots(w http.ResponseWriter, req *http.Request) {
ctx := req.Context()
status := db.BotStatus(req.URL.Query().Get("s"))
p := paginate.ParseParams(req)
page, err := r.admin.ListBots(ctx, status, p)
if err != nil {
render.Render(w, req, errorutil.ErrInvalidRequest(err))
return
}
render.JSON(w, req, page)
}