Documentation
¶
Index ¶
- Constants
- type ArchDataUpsertInput
- type ArchMeasurementInput
- type DataHandler
- func (h *DataHandler) GetArchData(w http.ResponseWriter, r *http.Request)
- func (h *DataHandler) GetRaceReportHTML(w http.ResponseWriter, r *http.Request)
- func (h *DataHandler) GetRaceReportSessions(w http.ResponseWriter, r *http.Request)
- func (h *DataHandler) PostArchData(w http.ResponseWriter, r *http.Request)
- func (h *DataHandler) PostRaceReport(w http.ResponseWriter, r *http.Request)
- type RaceReportHTMLQuery
- type RaceReportSessionsQuery
- type RaceReportUpsertInput
- type SporttiIDParam
- type UserDataHandler
Constants ¶
View Source
const (
ARCHCacheTTL = 6 * time.Hour
)
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ArchDataUpsertInput ¶
type ArchDataUpsertInput struct {
NationalID string `json:"national_id" validate:"required,numeric"`
FirstName *string `json:"first_name" validate:"omitempty"`
LastName *string `json:"last_name" validate:"omitempty"`
Initials *string `json:"initials" validate:"omitempty"`
DateOfBirth *string `json:"date_of_birth" validate:"omitempty"`
Height *float64 `json:"height" validate:"omitempty"`
Weight *float64 `json:"weight" validate:"omitempty"`
Measurements []ArchMeasurementInput `json:"measurements" validate:"omitempty,dive"`
}
type ArchMeasurementInput ¶
type ArchMeasurementInput struct {
Comment *string `json:"comment"`
Discipline *string `json:"discipline"`
MeasurementGroupID int32 `json:"measurement_group_id" validate:"required,gt=0"`
MeasurementID int32 `json:"measurement_id" validate:"required,gt=0"`
NbSegments *int32 `json:"nb_segments"`
Place *string `json:"place"`
RaceID *int32 `json:"race_id"`
SessionName *string `json:"session_name"`
StartTime *string `json:"start_time"`
StopTime *string `json:"stop_time"`
}
type DataHandler ¶
type DataHandler struct {
// contains filtered or unexported fields
}
func NewDataHandler ¶
func NewDataHandler(store archinisis.Data, cache *cache.Storage) *DataHandler
func (*DataHandler) GetArchData ¶
func (h *DataHandler) GetArchData(w http.ResponseWriter, r *http.Request)
GetArchData godoc
@Summary Get Archinisis data by Sportti ID
@Description Returns athlete profile and measurements for the given sportti id.
@Tags ARCHINISIS - Data
@Accept json
@Produce json
@Param id query string true "Sportti ID (national_id)"
@Success 200 {object} swagger.ArchDataResponse
@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 /archinisis/data [get]
func (*DataHandler) GetRaceReportHTML ¶
func (h *DataHandler) GetRaceReportHTML(w http.ResponseWriter, r *http.Request)
GetRaceReportHTML godoc
@Summary Get a specific race report (HTML)
@Description Returns the raw HTML race report for a (sportti_id, session_id). Content-Type is text/html.
@Tags ARCHINISIS - Data
@Accept json
@Produce html
@Param sportti_id query string true "Sportti ID"
@Param session_id query string true "Session ID"
@Success 200 {string} string "<!DOCTYPE html><html><head><title>Race Report</title></head><body><h1>HTML RACE REPORT</h1><p>full report returned in html DOCTYPE</p></body></html>"
@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 /archinisis/race-report [get]
func (*DataHandler) GetRaceReportSessions ¶
func (h *DataHandler) GetRaceReportSessions(w http.ResponseWriter, r *http.Request)
GetRaceReportSessions godoc
@Summary List race-report session IDs for a Sportti ID
@Description Returns all session_id values that have race reports for the given sportti_id
@Tags ARCHINISIS - Data
@Accept json
@Produce json
@Param sportti_id query string true "Sportti ID"
@Success 200 {object} swagger.RaceReportSessionsResponse
@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 /archinisis/race-report/sessions [get]
func (*DataHandler) PostArchData ¶
func (h *DataHandler) PostArchData(w http.ResponseWriter, r *http.Request)
PostArchData godoc
@Summary Upsert Archinisis athlete + measurements
@Description Inserts/updates athlete profile and related measurements in one request.
@Tags ARCHINISIS - Data
@Accept json
@Produce json
@Param data body swagger.ArchDataUpsertRequest true "athlete + measurements"
@Success 201 "Data processed successfully"
@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 /archinisis/data [post]
func (*DataHandler) PostRaceReport ¶
func (h *DataHandler) PostRaceReport(w http.ResponseWriter, r *http.Request)
PostRaceReport godoc
@Summary Upsert a race report (HTML)
@Description Inserts or updates a race report for (sportti_id, session_id).
@Tags ARCHINISIS - Data
@Accept json
@Produce json
@Param data body swagger.ArchRaceReportUpsertRequest true "race report"
@Success 201 "Data processed successfully"
@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 /archinisis/race-report [post]
type RaceReportHTMLQuery ¶
type RaceReportSessionsQuery ¶
type RaceReportSessionsQuery struct {
SporttiID string `validate:"required,numeric"`
}
type RaceReportUpsertInput ¶
type SporttiIDParam ¶
type SporttiIDParam struct {
SporttiID string `form:"sportti_id" validate:"required,numeric"`
}
type UserDataHandler ¶
type UserDataHandler struct {
// contains filtered or unexported fields
}
func NewUserDataHandler ¶
func NewUserDataHandler(store archinisis.Users, cache *cache.Storage) *UserDataHandler
func (*UserDataHandler) DeleteUser ¶
func (h *UserDataHandler) DeleteUser(w http.ResponseWriter, r *http.Request)
DeleteUser godoc
@Summary Delete an athlete (hard delete)
@Description Removes an athlete by sportti_id. Related measurements and reports are deleted via FK cascades.
@Tags Archinisis - User
@Accept json
@Produce json
@Param sportti_id query string true "Sportti ID"
@Success 200
@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 /archinisis/user [delete]
Click to show internal directories.
Click to hide internal directories.