57 lines
1.1 KiB
Go
57 lines
1.1 KiB
Go
package domain
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
type ResultStatus string
|
|
|
|
const (
|
|
ResultStatusUnspecified ResultStatus = "UNSPECIFIED"
|
|
ResultStatusPending ResultStatus = "PENDING"
|
|
ResultStatusProcessing ResultStatus = "PROCESSING"
|
|
ResultStatusCompleted ResultStatus = "COMPLETED"
|
|
ResultStatusFailed ResultStatus = "FAILED"
|
|
)
|
|
|
|
type Result struct {
|
|
ID uuid.UUID
|
|
CompetitionID uuid.UUID
|
|
UserID uuid.UUID
|
|
Score float64
|
|
Rank *int
|
|
Status ResultStatus
|
|
SubmissionID *uuid.UUID
|
|
Metadata map[string]interface{}
|
|
CreatedAt time.Time
|
|
UpdatedAt time.Time
|
|
}
|
|
|
|
func NewResult(
|
|
id uuid.UUID,
|
|
competitionID uuid.UUID,
|
|
userID uuid.UUID,
|
|
score float64,
|
|
rank *int,
|
|
status ResultStatus,
|
|
submissionID *uuid.UUID,
|
|
metadata map[string]interface{},
|
|
createdAt time.Time,
|
|
updatedAt time.Time,
|
|
) *Result {
|
|
return &Result{
|
|
ID: id,
|
|
CompetitionID: competitionID,
|
|
UserID: userID,
|
|
Score: score,
|
|
Rank: rank,
|
|
Status: status,
|
|
SubmissionID: submissionID,
|
|
Metadata: metadata,
|
|
CreatedAt: createdAt,
|
|
UpdatedAt: updatedAt,
|
|
}
|
|
}
|