downvote
This commit is contained in:
@@ -104,6 +104,11 @@ paths:
|
|||||||
description: "Project id"
|
description: "Project id"
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
|
- in: query
|
||||||
|
name: session_uuid
|
||||||
|
description: "Session UUID"
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
responses:
|
responses:
|
||||||
200:
|
200:
|
||||||
description: "successful operation"
|
description: "successful operation"
|
||||||
|
|||||||
@@ -44,19 +44,7 @@ func (h *FeedbackHandler) GetFeedbacks(params feedback.GetFeedbacksParams) middl
|
|||||||
return feedback.NewGetFeedbacksForbidden()
|
return feedback.NewGetFeedbacksForbidden()
|
||||||
}
|
}
|
||||||
|
|
||||||
return feedback.NewGetFeedbacksOK().WithPayload(feedbacksToAPI(feedbacks))
|
return feedback.NewGetFeedbacksOK().WithPayload(feedbacksToAPI(feedbacks, params.SessionUUID))
|
||||||
}
|
|
||||||
|
|
||||||
func (h *FeedbackHandler) GetFeedback(params feedback.GetFeedbacksForProjectParams) middleware.Responder {
|
|
||||||
feedbacks, err := h.feedback.GetByProjectID(params.ProjectID)
|
|
||||||
if err != nil {
|
|
||||||
h.logger.Error().Err(err).Msg("Cannot get feedbacks")
|
|
||||||
return feedback.NewGetFeedbacksForProjectForbidden()
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return feedback.NewGetFeedbacksForProjectOK().WithPayload(feedbacksToAPI(feedbacks))
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *FeedbackHandler) VoteFeedback(params feedback.UpvoteFeedbackParams) middleware.Responder {
|
func (h *FeedbackHandler) VoteFeedback(params feedback.UpvoteFeedbackParams) middleware.Responder {
|
||||||
@@ -76,22 +64,22 @@ func (h *FeedbackHandler) GetFeedbacksForProject(params feedback.GetFeedbacksFor
|
|||||||
return feedback.NewGetFeedbacksForProjectForbidden()
|
return feedback.NewGetFeedbacksForProjectForbidden()
|
||||||
}
|
}
|
||||||
|
|
||||||
return feedback.NewGetFeedbacksForProjectOK().WithPayload(feedbacksToAPI(feedbacks))
|
return feedback.NewGetFeedbacksForProjectOK().WithPayload(feedbacksToAPI(feedbacks, params.SessionUUID))
|
||||||
}
|
}
|
||||||
|
|
||||||
func feedbacksToAPI(feedbacks []*dmodels.Feedback) []*models.Feedback {
|
func feedbacksToAPI(feedbacks []*dmodels.Feedback, sessionUUID string) []*models.Feedback {
|
||||||
apiFeedbacks := make([]*models.Feedback, 0, len(feedbacks))
|
apiFeedbacks := make([]*models.Feedback, 0, len(feedbacks))
|
||||||
for _, f := range feedbacks {
|
for _, f := range feedbacks {
|
||||||
apiFeedbacks = append(apiFeedbacks, feedbackToAPI(f))
|
apiFeedbacks = append(apiFeedbacks, feedbackToAPI(f, sessionUUID))
|
||||||
}
|
}
|
||||||
|
|
||||||
return apiFeedbacks
|
return apiFeedbacks
|
||||||
}
|
}
|
||||||
|
|
||||||
func feedbackToAPI(feedback *dmodels.Feedback) *models.Feedback {
|
func feedbackToAPI(feedback *dmodels.Feedback, sessionUUID string) *models.Feedback {
|
||||||
var upvoted bool
|
var upvoted bool
|
||||||
for _, upvote := range feedback.Upvote {
|
for _, upvote := range feedback.Upvote {
|
||||||
if upvote.SessionUUID == feedback.SessionUUID {
|
if upvote.SessionUUID == sessionUUID {
|
||||||
upvoted = true
|
upvoted = true
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -160,6 +160,13 @@ func init() {
|
|||||||
"name": "project_id",
|
"name": "project_id",
|
||||||
"in": "path",
|
"in": "path",
|
||||||
"required": true
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "Session UUID",
|
||||||
|
"name": "session_uuid",
|
||||||
|
"in": "query",
|
||||||
|
"required": true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"responses": {
|
"responses": {
|
||||||
@@ -365,6 +372,13 @@ func init() {
|
|||||||
"name": "project_id",
|
"name": "project_id",
|
||||||
"in": "path",
|
"in": "path",
|
||||||
"required": true
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "Session UUID",
|
||||||
|
"name": "session_uuid",
|
||||||
|
"in": "query",
|
||||||
|
"required": true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"responses": {
|
"responses": {
|
||||||
|
|||||||
@@ -9,8 +9,10 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"github.com/go-openapi/errors"
|
"github.com/go-openapi/errors"
|
||||||
|
"github.com/go-openapi/runtime"
|
||||||
"github.com/go-openapi/runtime/middleware"
|
"github.com/go-openapi/runtime/middleware"
|
||||||
"github.com/go-openapi/strfmt"
|
"github.com/go-openapi/strfmt"
|
||||||
|
"github.com/go-openapi/validate"
|
||||||
)
|
)
|
||||||
|
|
||||||
// NewGetFeedbacksForProjectParams creates a new GetFeedbacksForProjectParams object
|
// NewGetFeedbacksForProjectParams creates a new GetFeedbacksForProjectParams object
|
||||||
@@ -35,6 +37,11 @@ type GetFeedbacksForProjectParams struct {
|
|||||||
In: path
|
In: path
|
||||||
*/
|
*/
|
||||||
ProjectID string
|
ProjectID string
|
||||||
|
/*Session UUID
|
||||||
|
Required: true
|
||||||
|
In: query
|
||||||
|
*/
|
||||||
|
SessionUUID string
|
||||||
}
|
}
|
||||||
|
|
||||||
// BindRequest both binds and validates a request, it assumes that complex things implement a Validatable(strfmt.Registry) error interface
|
// BindRequest both binds and validates a request, it assumes that complex things implement a Validatable(strfmt.Registry) error interface
|
||||||
@@ -46,10 +53,17 @@ func (o *GetFeedbacksForProjectParams) BindRequest(r *http.Request, route *middl
|
|||||||
|
|
||||||
o.HTTPRequest = r
|
o.HTTPRequest = r
|
||||||
|
|
||||||
|
qs := runtime.Values(r.URL.Query())
|
||||||
|
|
||||||
rProjectID, rhkProjectID, _ := route.Params.GetOK("project_id")
|
rProjectID, rhkProjectID, _ := route.Params.GetOK("project_id")
|
||||||
if err := o.bindProjectID(rProjectID, rhkProjectID, route.Formats); err != nil {
|
if err := o.bindProjectID(rProjectID, rhkProjectID, route.Formats); err != nil {
|
||||||
res = append(res, err)
|
res = append(res, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
qSessionUUID, qhkSessionUUID, _ := qs.GetOK("session_uuid")
|
||||||
|
if err := o.bindSessionUUID(qSessionUUID, qhkSessionUUID, route.Formats); err != nil {
|
||||||
|
res = append(res, err)
|
||||||
|
}
|
||||||
if len(res) > 0 {
|
if len(res) > 0 {
|
||||||
return errors.CompositeValidationError(res...)
|
return errors.CompositeValidationError(res...)
|
||||||
}
|
}
|
||||||
@@ -69,3 +83,24 @@ func (o *GetFeedbacksForProjectParams) bindProjectID(rawData []string, hasKey bo
|
|||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// bindSessionUUID binds and validates parameter SessionUUID from query.
|
||||||
|
func (o *GetFeedbacksForProjectParams) bindSessionUUID(rawData []string, hasKey bool, formats strfmt.Registry) error {
|
||||||
|
if !hasKey {
|
||||||
|
return errors.Required("session_uuid", "query", rawData)
|
||||||
|
}
|
||||||
|
var raw string
|
||||||
|
if len(rawData) > 0 {
|
||||||
|
raw = rawData[len(rawData)-1]
|
||||||
|
}
|
||||||
|
|
||||||
|
// Required: true
|
||||||
|
// AllowEmptyValue: false
|
||||||
|
|
||||||
|
if err := validate.RequiredString("session_uuid", "query", raw); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
o.SessionUUID = raw
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -16,6 +16,8 @@ import (
|
|||||||
type GetFeedbacksForProjectURL struct {
|
type GetFeedbacksForProjectURL struct {
|
||||||
ProjectID string
|
ProjectID string
|
||||||
|
|
||||||
|
SessionUUID string
|
||||||
|
|
||||||
_basePath string
|
_basePath string
|
||||||
// avoid unkeyed usage
|
// avoid unkeyed usage
|
||||||
_ struct{}
|
_ struct{}
|
||||||
@@ -55,6 +57,15 @@ func (o *GetFeedbacksForProjectURL) Build() (*url.URL, error) {
|
|||||||
}
|
}
|
||||||
_result.Path = golangswaggerpaths.Join(_basePath, _path)
|
_result.Path = golangswaggerpaths.Join(_basePath, _path)
|
||||||
|
|
||||||
|
qs := make(url.Values)
|
||||||
|
|
||||||
|
sessionUUIDQ := o.SessionUUID
|
||||||
|
if sessionUUIDQ != "" {
|
||||||
|
qs.Set("session_uuid", sessionUUIDQ)
|
||||||
|
}
|
||||||
|
|
||||||
|
_result.RawQuery = qs.Encode()
|
||||||
|
|
||||||
return &_result, nil
|
return &_result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user