This commit is contained in:
2026-10-02 23:19:44 +07:00
parent b1fb9c4dfa
commit b97a5bc0cd
3 changed files with 14 additions and 5 deletions
+3 -4
View File
@@ -7,8 +7,7 @@ import (
"evening_detective_server/internal/modules/processor_jwt"
"evening_detective_server/internal/modules/roles"
"evening_detective_server/internal/modules/team_qr_pdf"
"evening_detective_server/internal/repos/games_repo"
"evening_detective_server/internal/services/team_service"
"evening_detective_server/proto"
"google.golang.org/genproto/googleapis/api/httpbody"
@@ -32,9 +31,9 @@ func (s *server) DownloadTeamQR(ctx context.Context, req *proto.GetGameReq) (*ht
data, filename, err := s.teamService.DownloadTeamQR(ctx, int(req.ID))
if err != nil {
switch {
case errors.Is(err, games_repo.ErrGameNotFound):
case errors.Is(err, team_service.ErrGameNotFound):
return nil, status.Error(codes.NotFound, err.Error())
case errors.Is(err, team_qr_pdf.ErrNoCards):
case errors.Is(err, team_service.ErrNoCards):
return nil, status.Error(codes.FailedPrecondition, err.Error())
default:
return nil, status.Error(codes.Internal, err.Error())
+4 -1
View File
@@ -125,6 +125,9 @@ func registrationEmail(team *repos.Team, gameName, baseURL string) email_sender.
func (s *TeamService) DownloadTeamQR(ctx context.Context, id int) ([]byte, string, error) {
game, err := s.gamesRepo.GetGameByID(ctx, id)
if err != nil {
if errors.Is(err, games_repo.ErrGameNotFound) {
return nil, "", ErrGameNotFound
}
return nil, "", err
}
teams, err := s.teamsRepo.GetActiveTeamsByGameID(ctx, id)
@@ -132,7 +135,7 @@ func (s *TeamService) DownloadTeamQR(ctx context.Context, id int) ([]byte, strin
return nil, "", err
}
if len(teams) == 0 {
return nil, "", team_qr_pdf.ErrNoCards
return nil, "", ErrNoCards
}
cards, filename, err := teamQRData(s.appBaseURL, game, teams)
if err != nil {
@@ -11,6 +11,13 @@ import (
"evening_detective_server/internal/repos"
)
var (
// ErrGameNotFound — игра для генерации QR-кодов не найдена.
ErrGameNotFound = errors.New("Игра не найдена")
// ErrNoCards — для игры нет активных команд, которым нужны QR-коды.
ErrNoCards = errors.New("нет карточек")
)
func teamQRData(baseURL string, game *repos.Game, teams []*repos.Team) ([]team_qr_pdf.Card, string, error) {
base, err := url.Parse(strings.TrimSpace(baseURL))
if err != nil || (base.Scheme != "http" && base.Scheme != "https") || base.Host == "" || base.User != nil || base.RawQuery != "" || base.Fragment != "" {