package repository import ( "context" "datarush/internal/results/domain" "github.com/google/uuid" ) type ListResultsOptions struct { Page int PageSize int CompetitionID *uuid.UUID UserID *uuid.UUID Status *domain.ResultStatus MinScore *float64 MaxScore *float64 } type ResultRepository interface { Create(ctx context.Context, result *domain.Result) error Get(ctx context.Context, id uuid.UUID) (*domain.Result, error) Update(ctx context.Context, result *domain.Result) error Delete(ctx context.Context, id uuid.UUID) error List(ctx context.Context, opts ListResultsOptions) ([]domain.Result, int, error) GetByCompetitionAndUser(ctx context.Context, competitionID uuid.UUID, userID uuid.UUID) (*domain.Result, error) GetLeaderboard(ctx context.Context, competitionID uuid.UUID, limit int, offset int) ([]domain.Result, int, error) UpdateStatus(ctx context.Context, id uuid.UUID, status domain.ResultStatus) (*domain.Result, error) RecalculateRanks(ctx context.Context, competitionID uuid.UUID) error }