package models import ( "errors" "git.sch9.ru/new_gate/ms-tester/internal/lib" ) type Role int32 const ( RoleSpectator Role = 0 RoleParticipant Role = 1 RoleModerator Role = 2 RoleAdmin Role = 3 ) func (role Role) IsAdmin() bool { return role == RoleAdmin } func (role Role) IsModerator() bool { return role == RoleModerator } func (role Role) IsParticipant() bool { return role == RoleParticipant } func (role Role) IsSpectator() bool { return role == RoleSpectator } func (role Role) AtLeast(other Role) bool { return role >= other } func (role Role) AtMost(other Role) bool { return role <= other } var ErrBadRole = errors.New("bad role") func (role Role) Valid() error { switch role { case RoleSpectator, RoleParticipant, RoleModerator, RoleAdmin: return nil } return lib.ServiceError(ErrBadRole, lib.ErrValidationFailed, "bad role") } func (role Role) AsPointer() *Role { return &role }