Files
Datarush/internal/results/repository/result.go
T
2025-12-19 21:04:12 +03:00

32 lines
1.0 KiB
Go

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
}