Help us shape the future of Go! Take the 2026 Go Developer Survey

kamkapi

package
v1.3.2 Latest Latest
Warning

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

Go to latest
Published: Feb 6, 2026 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