Initial backend import
This commit is contained in:
40
internal/handlers/context.go
Normal file
40
internal/handlers/context.go
Normal file
@@ -0,0 +1,40 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
"github.com/jackc/pgx/v5/pgxpool"
|
||||
)
|
||||
|
||||
type ctxKey string
|
||||
|
||||
const poolKey ctxKey = "pgpool"
|
||||
|
||||
func WithPool(next http.Handler, pool *pgxpool.Pool) http.Handler {
|
||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
ctx := context.WithValue(r.Context(), poolKey, pool)
|
||||
next.ServeHTTP(w, r.WithContext(ctx))
|
||||
})
|
||||
}
|
||||
|
||||
func poolFrom(r *http.Request) *pgxpool.Pool {
|
||||
return r.Context().Value(poolKey).(*pgxpool.Pool)
|
||||
}
|
||||
|
||||
func parsePage(r *http.Request) (page, limit int) {
|
||||
page = 1
|
||||
limit = 20
|
||||
if v := r.URL.Query().Get("page"); v != "" {
|
||||
if n, err := strconv.Atoi(v); err == nil && n > 0 {
|
||||
page = n
|
||||
}
|
||||
}
|
||||
if v := r.URL.Query().Get("limit"); v != "" {
|
||||
if n, err := strconv.Atoi(v); err == nil && n > 0 && n <= 100 {
|
||||
limit = n
|
||||
}
|
||||
}
|
||||
return page, limit
|
||||
}
|
||||
Reference in New Issue
Block a user