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, } }