add results service
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user