Files

62 lines
1.4 KiB
Go

package main
import (
"log"
"net/http"
"github.com/FernandoVideira/LK_API_Temp/internal/store"
)
// GetFeed godoc
//
// @Summary Fetches the user feed
// @Description Fetches the user feed
// @Tags feed
// @Accept json
// @Produce json
// @Param limit query int false "Limit"
// @Param offset query int false "Offset"
// @Param sort query string false "Sort"
// @Param tags query string false "Tags"
// @Param search query string false "Search"
// @Param since query string false "Since"
// @Param until query string false "Until"
// @Success 200 {object} []store.PostWithMetadata
// @Failure 400 {object} error
// @Failure 500 {object} error
// @Security ApiKeyAuth
// @Router /users/feed [get]
func (api *api) getUserFeedHandler(w http.ResponseWriter, r *http.Request) {
fq := store.PaginatedFeedQuery{
Limit: 20,
Offset: 0,
Sort: "desc",
Tags: []string{},
Search: "",
}
fq, err := fq.Parse(r)
if err != nil {
api.badRequestError(w, r, err)
return
}
if err := Validate.Struct(fq); err != nil {
api.badRequestError(w, r, err)
return
}
ctx := r.Context()
user := getUserFromContext(r)
log.Println(user)
feed, err := api.store.Posts.GetUserFeed(ctx, user.ID, fq)
if err != nil {
api.internalServerError(w, r, err)
return
}
if err := api.jsonResponse(w, http.StatusOK, feed); err != nil {
api.internalServerError(w, r, err)
}
}