package api import ( "net/http" "strconv" ) func queryInt(r *http.Request, key string, def int) int { v := r.URL.Query().Get(key) if v == "" { return def } n, err := strconv.Atoi(v) if err != nil { return def } return n } // --- публикации --- func (a *API) posts(kind string) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { list, err := a.store.Posts(r.Context(), kind, queryInt(r, "limit", 20)) if err != nil { handleErr(w, err) return } ok(w, list, map[string]any{"total": len(list)}) } } func (a *API) post(kind string) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { p, err := a.store.PostBySlug(r.Context(), kind, r.PathValue("slug")) if err != nil { handleErr(w, err) return } ok(w, p, nil) } } // --- остальной контент --- func (a *API) reviews(w http.ResponseWriter, r *http.Request) { list, err := a.store.Reviews(r.Context(), r.URL.Query().Get("doctor"), queryInt(r, "limit", 50)) if err != nil { handleErr(w, err) return } ok(w, list, map[string]any{"total": len(list)}) } func (a *API) faq(w http.ResponseWriter, r *http.Request) { list, err := a.store.FAQ(r.Context(), r.URL.Query().Get("service")) if err != nil { handleErr(w, err) return } ok(w, list, map[string]any{"total": len(list)}) } func (a *API) documents(w http.ResponseWriter, r *http.Request) { list, err := a.store.Documents(r.Context(), r.URL.Query().Get("kind")) if err != nil { handleErr(w, err) return } ok(w, list, map[string]any{"total": len(list)}) } func (a *API) partners(w http.ResponseWriter, r *http.Request) { list, err := a.store.Partners(r.Context()) if err != nil { handleErr(w, err) return } ok(w, list, map[string]any{"total": len(list)}) } func (a *API) vacancies(w http.ResponseWriter, r *http.Request) { list, err := a.store.Vacancies(r.Context()) if err != nil { handleErr(w, err) return } ok(w, list, map[string]any{"total": len(list)}) } func (a *API) branches(w http.ResponseWriter, r *http.Request) { list, err := a.store.Branches(r.Context()) if err != nil { handleErr(w, err) return } ok(w, list, map[string]any{"total": len(list)}) } func (a *API) checkups(w http.ResponseWriter, r *http.Request) { list, err := a.store.Checkups(r.Context(), r.URL.Query().Get("audience")) if err != nil { handleErr(w, err) return } ok(w, list, map[string]any{"total": len(list)}) } func (a *API) checkup(w http.ResponseWriter, r *http.Request) { c, err := a.store.CheckupBySlug(r.Context(), r.PathValue("slug")) if err != nil { handleErr(w, err) return } ok(w, c, nil) } func (a *API) page(w http.ResponseWriter, r *http.Request) { p, err := a.store.PageBySlug(r.Context(), r.PathValue("slug")) if err != nil { handleErr(w, err) return } ok(w, p, nil) } func (a *API) gallery(w http.ResponseWriter, r *http.Request) { list, err := a.store.Gallery(r.Context()) if err != nil { handleErr(w, err) return } ok(w, list, map[string]any{"total": len(list)}) } func (a *API) settings(w http.ResponseWriter, r *http.Request) { m, err := a.store.Settings(r.Context()) if err != nil { handleErr(w, err) return } ok(w, m, nil) }