diff --git a/cmd/web/handlers.go b/cmd/web/handlers.go index 82fa3c0..3b057e2 100644 --- a/cmd/web/handlers.go +++ b/cmd/web/handlers.go @@ -133,10 +133,10 @@ func (app *application) createVotes(w http.ResponseWriter, r *http.Request) { return } - election, err := app.elections.GetById(request.ElectionId) + election, err := app.elections.GetById(request.ElectionId) // get from path instead of from the JSON if err != nil { if errors.Is(err, sql.ErrNoRows) { - app.unprocessableEntityErrorSingle(w, fmt.Errorf("election with id %v doesn't exist", request.ElectionId)) + app.unprocessableEntityErrorSingle(w, fmt.Errorf("election with id %v doesn't exist", request.ElectionId)) // TODO: return 404 return } app.serverError(w, r, err) diff --git a/cmd/web/openapi.yml b/cmd/web/openapi.yml index 66028a7..dcc034a 100644 --- a/cmd/web/openapi.yml +++ b/cmd/web/openapi.yml @@ -51,6 +51,44 @@ paths: application/json: schema: $ref: "#/components/schemas/ErrorResponse" + 500: + description: Server error + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorResponse" + + /election/{id}/results: + get: + tags: + - election + summary: Get the results of an election + parameters: + - name: id + in: path + required: true + description: The ID of the election + schema: + type: integer + responses: + 200: + description: Election results returned + content: + application/json: + schema: + $ref: "#/components/schemas/ElectionResultsResponse" + 404: + description: Election doesn't exist + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorResponse" + 500: + description: Server error + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorResponse" /votes: post: @@ -72,6 +110,12 @@ paths: application/json: schema: $ref: "#/components/schemas/ErrorResponse" + 500: + description: Server error + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorResponse" components: schemas: @@ -243,6 +287,9 @@ components: tokens: type: integer + ElectionResultsResponse: + type: object + ErrorResponse: type: object required: