kamkapi

package
v1.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 17, 2025 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const (
	KAMKCacheTTL = 6 * time.Hour
)

Variables

This section is empty.

Functions

This section is empty.

Types

type InjuriesHandler

type InjuriesHandler struct {
	// contains filtered or unexported fields
}

Handler

func NewInjuriesHandler

func NewInjuriesHandler(store kamk.Injuries, cache *cache.Storage) *InjuriesHandler

func (*InjuriesHandler) AddInjury

func (h *InjuriesHandler) AddInjury(w http.ResponseWriter, r *http.Request)

AddInjury godoc

@Summary		Create injury
@Description	Creates a new injury row (status=0, date_start=NOW()) for a competitor
@Tags			KAMK - Injuries
@Accept			json
@Produce		json
@Param			body	body	swagger.KamkAddInjuryRequest	true	"Injury payload"
@Success		201		"Created: Injury stored (no content in response body)"
@Failure		400		{object}	swagger.ValidationErrorResponse
@Failure		401		{object}	swagger.UnauthorizedResponse
@Failure		403		{object}	swagger.ForbiddenResponse
@Failure		500		{object}	swagger.InternalServerErrorResponse
@Failure		503		{object}	swagger.ServiceUnavailableResponse
@Security		BearerAuth
@Router			/kamk/injury [post]

func (*InjuriesHandler) DeleteInjury

func (h *InjuriesHandler) DeleteInjury(w http.ResponseWriter, r *http.Request)

DeleteInjury godoc

@Summary		Delete an injury by injury_id
@Description	Deletes a single injury for a competitor
@Tags			KAMK - Injuries
@Accept			json
@Produce		json
@Param			user_id		query	integer	true	"sportti_id"
@Param			injury_id	query	integer	true	"Injury ID"
@Success		200			"OK: deleted"
@Failure		400			{object}	swagger.ValidationErrorResponse
@Failure		401			{object}	swagger.UnauthorizedResponse
@Failure		403			{object}	swagger.ForbiddenResponse
@Failure		404			{object}	swagger.NotFoundResponse
@Failure		500			{object}	swagger.InternalServerErrorResponse
@Failure		503			{object}	swagger.ServiceUnavailableResponse
@Security		BearerAuth
@Router			/kamk/injury [delete]

func (*InjuriesHandler) GetActive

func (h *InjuriesHandler) GetActive(w http.ResponseWriter, r *http.Request)

GetActive godoc

@Summary		List active injuries
@Description	Returns active injuries (status=0) for a competitor
@Tags			KAMK - Injuries
@Accept			json
@Produce		json
@Param			user_id	query		integer	true	"Competitor sportti_id"
@Success		200		{object}	swagger.KamkInjuriesListResponse
@Success		204		"No Content: no injuries"
@Failure		400		{object}	swagger.ValidationErrorResponse
@Failure		401		{object}	swagger.UnauthorizedResponse
@Failure		403		{object}	swagger.ForbiddenResponse
@Failure		500		{object}	swagger.InternalServerErrorResponse
@Failure		503		{object}	swagger.ServiceUnavailableResponse
@Security		BearerAuth
@Router			/kamk/injury [get]

func (*InjuriesHandler) GetMaxID

func (h *InjuriesHandler) GetMaxID(w http.ResponseWriter, r *http.Request)

GetMaxID godoc

@Summary		Get next injury id helper
@Description	Returns the current maximum injury_id for a competitor (0 if none exist)
@Tags			KAMK - Injuries
@Accept			json
@Produce		json
@Param			user_id	query		integer	true	"Competitor sportti_id"
@Success		200		{object}	swagger.KamkMaxInjuryIDResponse
@Failure		400		{object}	swagger.ValidationErrorResponse
@Failure		401		{object}	swagger.UnauthorizedResponse
@Failure		403		{object}	swagger.ForbiddenResponse
@Failure		500		{object}	swagger.InternalServerErrorResponse
@Failure		503		{object}	swagger.ServiceUnavailableResponse
@Security		BearerAuth
@Router			/kamk/injury-id [get]

func (*InjuriesHandler) MarkRecovered

func (h *InjuriesHandler) MarkRecovered(w http.ResponseWriter, r *http.Request)

MarkRecovered godoc

@Summary		Mark injury recovered
@Description	Sets status=1 and date_end=NOW() for an injury recovery
@Tags			KAMK - Injuries
@Accept			json
@Produce		json
@Param			body	body	swagger.KamkMarkRecoveredRequest	true	"Recovery payload"
@Success		200		"OK: Marked recovered"
@Failure		400		{object}	swagger.ValidationErrorResponse
@Failure		401		{object}	swagger.UnauthorizedResponse
@Failure		403		{object}	swagger.ForbiddenResponse
@Failure		500		{object}	swagger.InternalServerErrorResponse
@Failure		503		{object}	swagger.ServiceUnavailableResponse
@Security		BearerAuth
@Router			/kamk/injury-recovered [post]

type KamkAddInjuryInput

type KamkAddInjuryInput struct {
	UserID      int32  `json:"user_id" validate:"required,gt=0"`
	InjuryType  int32  `json:"injury_type" validate:"required"`
	Severity    int32  `json:"severity" validate:"required"`
	PainLevel   int32  `json:"pain_level" validate:"required"`
	Description string `json:"description" validate:"required"`
	InjuryID    int32  `json:"injury_id" validate:"required"`
	Meta        string `json:"meta" validate:"required"`
}

Validation structs

type KamkAddQuestionnaireInput

type KamkAddQuestionnaireInput struct {
	UserID    int32  `json:"user_id" validate:"required,gt=0"`
	QueryType int32  `json:"query_type" validate:"gte=0"`
	Answers   string `json:"answers" validate:"required"`
	Comment   string `json:"comment" validate:"required"`
	Meta      string `json:"meta" validate:"required"`
}

Validation structs

type KamkDeleteInjuryParams

type KamkDeleteInjuryParams struct {
	UserID   int32 `form:"user_id"   validate:"required,gt=0"`
	InjuryID int32 `form:"injury_id" validate:"required,gt=0"`
}

type KamkGetInjuriesParams

type KamkGetInjuriesParams struct {
	UserID int32 `form:"user_id" validate:"required,gt=0"`
}

type KamkGetMaxIDParams

type KamkGetMaxIDParams struct {
	UserID int32 `form:"user_id" validate:"required,gt=0"`
}

type KamkGetQuestionnairesParams

type KamkGetQuestionnairesParams struct {
	UserID int32 `json:"user_id" validate:"required,gt=0"`
}

type KamkIsQuizDoneParams

type KamkIsQuizDoneParams struct {
	UserID   int32 `json:"user_id" validate:"required,gt=0"`
	QuizType int32 `form:"quiz_type" validate:"gte=0"`
}

type KamkMarkRecoveredInput

type KamkMarkRecoveredInput struct {
	UserID   int32 `json:"user_id" validate:"required,gt=0"`
	InjuryID int32 `json:"injury_id" validate:"required"`
}

type KamkUpdateQuestionnaireBody

type KamkUpdateQuestionnaireBody struct {
	Answers string `json:"answers" validate:"required"`
	Comment string `json:"comment" validate:"required"`
}

type KamkUpdateQuestionnaireQuery

type KamkUpdateQuestionnaireQuery struct {
	UserID int32 `form:"user_id" validate:"required,gt=0"`
	ID     int64 `form:"id" validate:"required,gt=0"`
}

type QueriesHandler

type QueriesHandler struct {
	// contains filtered or unexported fields
}

Handler

func NewQueriesHandler

func NewQueriesHandler(store kamk.Queries, cache *cache.Storage) *QueriesHandler

func (*QueriesHandler) AddQuestionnaire

func (h *QueriesHandler) AddQuestionnaire(w http.ResponseWriter, r *http.Request)

AddQuestionnaire godoc

@Summary		Create questionnaire entry
@Description	Inserts a questionnaire row for a competitor (timestamp=NOW())
@Tags			KAMK - Queries
@Accept			json
@Produce		json
@Param			body	body		swagger.KamkAddQuestionnaireRequest	true	"Questionnaire payload"
@Success		201		{object}	swagger.KamkCreateQuestionnaireResponse
@Failure		400		{object}	swagger.ValidationErrorResponse
@Failure		401		{object}	swagger.UnauthorizedResponse
@Failure		403		{object}	swagger.ForbiddenResponse
@Failure		500		{object}	swagger.InternalServerErrorResponse
@Failure		503		{object}	swagger.ServiceUnavailableResponse
@Security		BearerAuth
@Router			/kamk/questionnaire [post]

func (*QueriesHandler) DeleteQuestionnaire

func (h *QueriesHandler) DeleteQuestionnaire(w http.ResponseWriter, r *http.Request)

DeleteQuestionnaire godoc

@Summary		Delete a questionnaire by id
@Description	Deletes a questionnaire row (competitor_id=user_id AND id=id)
@Tags			KAMK - Queries
@Accept			json
@Produce		json
@Param			user_id	query	integer	true	"sportti_id"
@Param			id		query	integer	true	"Questionnaire ID"
@Success		200		"OK: deleted"
@Failure		400		{object}	swagger.ValidationErrorResponse
@Failure		401		{object}	swagger.UnauthorizedResponse
@Failure		403		{object}	swagger.ForbiddenResponse
@Failure		404		{object}	swagger.NotFoundResponse
@Failure		500		{object}	swagger.InternalServerErrorResponse
@Failure		503		{object}	swagger.ServiceUnavailableResponse
@Security		BearerAuth
@Router			/kamk/delete-quiz [delete]

func (*QueriesHandler) GetQuestionnaires

func (h *QueriesHandler) GetQuestionnaires(w http.ResponseWriter, r *http.Request)

GetQuestionnaires godoc

@Summary		List questionnaires
@Description	Returns questionnaires for a competitor ordered by timestamp DESC
@Tags			KAMK - Queries
@Accept			json
@Produce		json
@Param			user_id	query		integer	true	"sportti_id"
@Success		200		{object}	swagger.KamkQuestionnairesListResponse
@Success		204		"No Content: no rows"
@Failure		400		{object}	swagger.ValidationErrorResponse
@Failure		401		{object}	swagger.UnauthorizedResponse
@Failure		403		{object}	swagger.ForbiddenResponse
@Failure		500		{object}	swagger.InternalServerErrorResponse
@Failure		503		{object}	swagger.ServiceUnavailableResponse
@Security		BearerAuth
@Router			/kamk/questionnaire [get]

func (*QueriesHandler) IsQuizDoneToday

func (h *QueriesHandler) IsQuizDoneToday(w http.ResponseWriter, r *http.Request)

IsQuizDoneToday godoc

@Summary		Check if certain quiz is due for the user. Used for daily quizzes.
@Description	Return the quiz if it was done today
@Tags			KAMK - Queries
@Accept			json
@Produce		json
@Param			user_id		query		integer	true	"sportti_id"
@Param			quiz_type	query		integer	true	"Quiz type"
@Success		200			{object}	swagger.KamkQuestionnairesListResponse
@Success		204			"No Content: no rows today"
@Failure		400			{object}	swagger.ValidationErrorResponse
@Failure		401			{object}	swagger.UnauthorizedResponse
@Failure		403			{object}	swagger.ForbiddenResponse
@Failure		500			{object}	swagger.InternalServerErrorResponse
@Failure		503			{object}	swagger.ServiceUnavailableResponse
@Security		BearerAuth
@Router			/kamk/is-quiz-done [get]

func (*QueriesHandler) UpdateQuestionnaireByID

func (h *QueriesHandler) UpdateQuestionnaireByID(w http.ResponseWriter, r *http.Request)

UpdateQuestionnaireByID godoc

@Summary		Update questionnaire by id
@Description	Updates the questionnaire row identified by id (and user_id)
@Tags			KAMK - Queries
@Accept			json
@Produce		json
@Param			user_id	query	integer								true	"sportti_id"
@Param			id		query	integer								true	"Questionnaire ID"
@Param			body	body	swagger.KamkUpdateQuestionnaireBody	true	"Update payload"
@Success		200		"OK: updated"
@Failure		400		{object}	swagger.ValidationErrorResponse
@Failure		401		{object}	swagger.UnauthorizedResponse
@Failure		403		{object}	swagger.ForbiddenResponse
@Failure		404		{object}	swagger.NotFoundResponse
@Failure		500		{object}	swagger.InternalServerErrorResponse
@Failure		503		{object}	swagger.ServiceUnavailableResponse
@Security		BearerAuth
@Router			/kamk/update-quiz [post]

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL