feat: adding limits

This commit is contained in:
2025-08-30 10:45:53 +01:00
parent de96f12b55
commit d97593d487
5 changed files with 120 additions and 14 deletions

View File

@@ -6,6 +6,7 @@ import (
"net/http"
"os"
. "screenmark/screenmark/.gen/haystack/haystack/model"
"screenmark/screenmark/limits"
"screenmark/screenmark/middleware"
"screenmark/screenmark/models"
"strings"
@@ -15,8 +16,9 @@ import (
)
type StackHandler struct {
logger *log.Logger
stackModel models.ListModel
logger *log.Logger
stackModel models.ListModel
limitsManager limits.LimitsManagerMethods
}
func (h *StackHandler) getAllStacks(w http.ResponseWriter, r *http.Request) {
@@ -144,18 +146,19 @@ func (h *StackHandler) CreateRoutes(r chi.Router) {
r.Get("/", h.getAllStacks)
r.Get("/{listID}", h.getStackItems)
r.Post("/", middleware.WithValidatedPost(h.createStack))
r.Post("/", middleware.WithLimit(h.logger, h.limitsManager.HasReachedStackLimit, middleware.WithValidatedPost(h.createStack)))
r.Patch("/{listID}", middleware.WithValidatedPost(h.editStack))
r.Delete("/{listID}", h.deleteStack)
})
}
func CreateStackHandler(db *sql.DB) StackHandler {
func CreateStackHandler(db *sql.DB, limitsManager limits.LimitsManagerMethods) StackHandler {
stackModel := models.NewListModel(db)
logger := log.New(os.Stdout).WithPrefix("Stacks")
return StackHandler{
logger,
stackModel,
limitsManager,
}
}