add competition service (it`s broken, I will fix it later)

This commit is contained in:
Timur Kh.
2025-12-16 23:14:01 +03:00
parent 7499a14024
commit 69d99e08ea
13 changed files with 1116 additions and 5 deletions
@@ -0,0 +1,73 @@
package domain
import (
"fmt"
"time"
"github.com/go-playground/validator/v10"
"github.com/google/uuid"
)
type CompetitionState string
const (
CompetitionStateUnspecified CompetitionState = "UNSPECIFIED"
CompetitionStateDraft CompetitionState = "DRAFT"
CompetitionStateNotStarted CompetitionState = "NOT_STARTED"
CompetitionStateStarted CompetitionState = "STARTED"
CompetitionStateFinished CompetitionState = "FINISHED"
CompetitionStateArchived CompetitionState = "ARCHIVED"
)
type ParticipationType string
const (
ParticipationTypeUnspecified ParticipationType = "UNSPECIFIED"
ParticipationTypeIndividual ParticipationType = "INDIVIDUAL"
ParticipationTypeTeam ParticipationType = "TEAM"
)
type CompetitionType string
const (
CompetitionTypeUnspecified CompetitionType = "UNSPECIFIED"
CompetitionTypeEducative CompetitionType = "EDUCATIVE"
CompetitionTypeCompetitive CompetitionType = "COMPETITIVE"
)
type Competition struct {
ID uuid.UUID
State CompetitionState
Title string
Description string
ImageURL *string
StartTime time.Time
EndTime time.Time
Type CompetitionType
ParticipationType ParticipationType
CreatedAt time.Time
UpdatedAt time.Time
}
func NewCompetition(id uuid.UUID, state CompetitionState, title string, description string, imageURL *string, startTime time.Time, endTime time.Time, tpe CompetitionType, participationType ParticipationType, createdAt time.Time, updatedAt time.Time) *Competition {
return &Competition{
ID: id,
State: state,
Title: title,
Description: description,
ImageURL: imageURL,
StartTime: startTime,
EndTime: endTime,
Type: tpe,
ParticipationType: participationType,
CreatedAt: createdAt,
UpdatedAt: updatedAt,
}
}
func (c *Competition) Validate() error {
validate := validator.New()
return fmt.Errorf("%w: %w", ErrInvalidCompetitionData, validate.Struct(c))
}
+8
View File
@@ -0,0 +1,8 @@
package domain
import "errors"
var (
ErrCompetitionNotFound = errors.New("competition not found")
ErrInvalidCompetitionData = errors.New("invalid competition data")
)