add accept

This commit is contained in:
2026-09-18 17:46:35 +07:00
parent ca7659f732
commit f07038f43a
10 changed files with 699 additions and 207 deletions
@@ -20,6 +20,8 @@ var (
ErrInvalidTicketCount = errors.New("количество билетов должно быть от 1 до 100")
ErrInvalidBaseURL = errors.New("необходимо настроить APP_BASE_URL — публичный адрес приложения")
ErrTicketNotFound = tickets_repo.ErrTicketNotFound
ErrTicketUsed = tickets_repo.ErrTicketUsed
ErrGameFinished = tickets_repo.ErrGameFinished
)
type Ticket struct {
@@ -35,6 +37,7 @@ type Page struct {
Location *string
GameStatus string
UsedAt *time.Time
UsedBy *string
}
type Service struct {
@@ -100,9 +103,22 @@ func (s *Service) Get(ctx context.Context, token string) (*Page, error) {
Location: info.Location,
GameStatus: info.GameStatus,
UsedAt: info.UsedAt,
UsedBy: info.UsedBy,
}, nil
}
func (s *Service) Accept(ctx context.Context, token string, userID int) (*Page, error) {
hash, err := tokenHash(token)
if err != nil {
return nil, ErrTicketNotFound
}
info, err := s.repo.Accept(ctx, hash, userID)
if err != nil {
return nil, err
}
return &Page{ID: info.ID, Status: info.Status, GameName: info.GameName, StartAt: info.StartAt, Location: info.Location, GameStatus: info.GameStatus, UsedAt: info.UsedAt, UsedBy: info.UsedBy}, nil
}
func newToken() (string, error) {
data := make([]byte, 32)
if _, err := rand.Read(data); err != nil {