feat: initial commit

This commit is contained in:
2025-03-31 16:17:35 +01:00
commit 6719f8a61a
91 changed files with 7119 additions and 0 deletions
+58
View File
@@ -0,0 +1,58 @@
package main
import (
"errors"
"net/http"
"github.com/FernandoVideira/LK_API_Temp/internal/store"
)
type CreateCommentPayload struct {
Content string `json:"content" validate:"required, max=1000"`
}
// CreateComment godo
//
// @Summary Creates a new Comment
// @Description Creates a new Comment
// @Tags comments
// @Accept json
// @Produce json
// @Param id path int true "Post ID"
// @Success 200 {object} store.Comment
// @Failure 400 {object} error
// @Failure 404 {object} error
// @Failure 500 {object} error
// @Security ApiKeyAuth
// @Router /posts/{id}/comments [post]
func (api *api) createCommentHandler(w http.ResponseWriter, r *http.Request) {
var payload CreateCommentPayload
if err := readJSON(w, r, &payload); err != nil {
api.badRequestError(w, r, err)
return
}
if err := Validate.Struct(payload); err != nil {
api.badRequestError(w, r, err)
return
}
post := getPostFromContext(r)
if post == nil {
api.notFoundError(w, r, errors.New("post not found"))
return
}
user := getUserFromContext(r)
comment := &store.Comment{
PostID: post.ID,
UserID: user.ID,
Content: payload.Content,
}
if err := api.store.Comments.Create(r.Context(), comment); err != nil {
api.internalServerError(w, r, err)
return
}
}