archapi

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: 11 Imported by: 0

Documentation

Index

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 RaceReportHTMLQuery struct {
	SporttiID string `validate:"required,numeric"`
	SessionID string `validate:"required,numeric"`
}

type RaceReportSessionsQuery

type RaceReportSessionsQuery struct {
	SporttiID string `validate:"required,numeric"`
}

type RaceReportUpsertInput

type RaceReportUpsertInput struct {
	SporttiID  string `json:"sportti_id" validate:"required,numeric"`
	SessionID  int32  `json:"session_id" validate:"required,gt=0"`
	RaceReport string `json:"race_report" validate:"required"`
}

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]

Jump to

Keyboard shortcuts

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