diff --git a/api/main.proto b/api/main.proto index bb1be57..95a3e3f 100644 --- a/api/main.proto +++ b/api/main.proto @@ -672,6 +672,50 @@ service EveningDetectiveServer { }; } + rpc CreateGameReview(CreateGameReviewReq) returns (CreateGameReviewRsp) { + option (google.api.http) = { + post: "/api/games/{gameId}/reviews" + body: "*" + }; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + security: { security_requirement: {} } + tags : "Отзывы" + summary : "Оставить отзыв об игре" + }; + } + + rpc GetGameReviews(GetGameReviewsReq) returns (GetGameReviewsRsp) { + option (google.api.http) = { + get: "/api/games/{gameId}/reviews" + }; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + security: { security_requirement: {} } + tags : "Отзывы" + summary : "Получить отзывы об игре" + }; + } + + rpc GetGameReviewsForModeration(GetGameReviewsReq) returns (GetGameReviewsRsp) { + option (google.api.http) = { + get: "/api/admin/games/{gameId}/reviews" + }; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + tags : "Отзывы" + summary: "Получить отзывы игры для модерации" + }; + } + + rpc ModerateGameReview(ModerateGameReviewReq) returns (ModerateGameReviewRsp) { + option (google.api.http) = { + put : "/api/admin/game-reviews/{id}" + body: "*" + }; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + tags : "Отзывы" + summary: "Модерировать отзыв" + }; + } + rpc UpdateGame(UpdateGameReq) returns (UpdateGameRsp) { option (google.api.http) = { put : "/api/games/{id}" @@ -1569,6 +1613,51 @@ message GetGameResultsRsp { repeated TeamResult teams = 3; } +message GameReview { + int32 id = 1; + int32 game_id = 2; + int32 team_id = 3; + string team_name = 4; + int32 rating = 5; + string text = 6; + string status = 7; + google.protobuf.Timestamp created_at = 8; +} + +message CreateGameReviewReq { + int32 gameId = 1; + int32 teamId = 2; + string password = 3; + int32 rating = 4; + string text = 5; +} + +message CreateGameReviewRsp { + string error = 1; + GameReview review = 2; +} + +message GetGameReviewsReq { + int32 gameId = 1; +} + +message GetGameReviewsRsp { + string error = 1; + double average_rating = 2; + int32 reviews_count = 3; + repeated GameReview reviews = 4; +} + +message ModerateGameReviewReq { + int32 id = 1; + string status = 2; +} + +message ModerateGameReviewRsp { + string error = 1; + GameReview review = 2; +} + message UpdateGameReq { int32 id = 1; string name = 2; diff --git a/bin/evening_detective_server b/bin/evening_detective_server index 4df24f5..1d5b119 100755 Binary files a/bin/evening_detective_server and b/bin/evening_detective_server differ diff --git a/cmd/evening_detective_server/main.go b/cmd/evening_detective_server/main.go index 00a6f7b..4fa3846 100644 --- a/cmd/evening_detective_server/main.go +++ b/cmd/evening_detective_server/main.go @@ -15,6 +15,7 @@ import ( "evening_detective_server/internal/repos/actions_repo" "evening_detective_server/internal/repos/applications_repo" "evening_detective_server/internal/repos/game_map_repo" + "evening_detective_server/internal/repos/game_reviews_repo" "evening_detective_server/internal/repos/games_repo" "evening_detective_server/internal/repos/refresh_tokens_repo" "evening_detective_server/internal/repos/scenarios_repo" @@ -24,6 +25,7 @@ import ( "evening_detective_server/internal/repos/users_repo" "evening_detective_server/internal/services/answer_service" "evening_detective_server/internal/services/file_service" + "evening_detective_server/internal/services/game_review_service" "evening_detective_server/internal/services/game_service" "evening_detective_server/internal/services/gameplay_service" "evening_detective_server/internal/services/mcp_service" @@ -134,6 +136,7 @@ func main() { answersRepo := team_answers_repo.NewTeamAnswersRepo(dbpool) screenRepo := screen_sessions_repo.NewScreenSessionsRepo(dbpool) mapRepo := game_map_repo.New(dbpool) + reviewsRepo := game_reviews_repo.New(dbpool) gameService := game_service.NewGameService( gameRepo, teamRepo, @@ -147,11 +150,13 @@ func main() { gameplayService := gameplay_service.NewGameplayService(gameRepo, teamRepo, scenarioService, storyteller, actionsRepo, applicationsRepo, cleaner, os.Getenv("FILE_PREFIX_DOMAIN")) answerService := answer_service.NewAnswerService(gameRepo, teamRepo, scenarioService, answersRepo, actionsRepo) + reviewService := game_review_service.New(reviewsRepo, gameRepo, teamRepo, os.Getenv("APP_BASE_URL")) teamService := team_service.NewTeamService(gameRepo, teamRepo, passwordGenerator, os.Getenv("APP_BASE_URL"), emailSender) participationService := participation_service.NewParticipationService(teamRepo, os.Getenv("APP_BASE_URL")) go participationService.RunParticipationEmails(context.Background(), emailSender, os.Getenv("PARTICIPATION_SECRET"), os.Getenv("GAME_TIMEZONE")) + go reviewService.RunReviewReminderEmails(context.Background(), emailSender) // Create a listener on TCP port lis, err := net.Listen("tcp", ":8080") @@ -186,6 +191,8 @@ func main() { "/crabs.evening_detective_server.EveningDetectiveServer/CreateScreenSession": true, "/crabs.evening_detective_server.EveningDetectiveServer/GetScreenState": true, "/crabs.evening_detective_server.EveningDetectiveServer/GetScreenResults": true, + "/crabs.evening_detective_server.EveningDetectiveServer/CreateGameReview": true, + "/crabs.evening_detective_server.EveningDetectiveServer/GetGameReviews": true, }, processorJWT, ), @@ -202,6 +209,7 @@ func main() { gameService, gameplayService, answerService, + reviewService, teamService, participationService, screenRepo, diff --git a/cmd/evening_detective_server/main.swagger.json b/cmd/evening_detective_server/main.swagger.json index ac0d611..9e45366 100644 --- a/cmd/evening_detective_server/main.swagger.json +++ b/cmd/evening_detective_server/main.swagger.json @@ -16,6 +16,78 @@ "application/json" ], "paths": { + "/api/admin/game-reviews/{id}": { + "put": { + "summary": "Модерировать отзыв", + "operationId": "EveningDetectiveServer_ModerateGameReview", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/evening_detective_serverModerateGameReviewRsp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/EveningDetectiveServerModerateGameReviewBody" + } + } + ], + "tags": [ + "Отзывы" + ] + } + }, + "/api/admin/games/{gameId}/reviews": { + "get": { + "summary": "Получить отзывы игры для модерации", + "operationId": "EveningDetectiveServer_GetGameReviewsForModeration", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/evening_detective_serverGetGameReviewsRsp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "gameId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Отзывы" + ] + } + }, "/api/auth/delete-account": { "delete": { "summary": "Удалить учётную запись и персональные данные", @@ -505,6 +577,86 @@ ] } }, + "/api/games/{gameId}/reviews": { + "get": { + "summary": "Получить отзывы об игре", + "operationId": "EveningDetectiveServer_GetGameReviews", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/evening_detective_serverGetGameReviewsRsp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "gameId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Отзывы" + ], + "security": [ + { + "": [] + } + ] + }, + "post": { + "summary": "Оставить отзыв об игре", + "operationId": "EveningDetectiveServer_CreateGameReview", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/evening_detective_serverCreateGameReviewRsp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "gameId", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/EveningDetectiveServerCreateGameReviewBody" + } + } + ], + "tags": [ + "Отзывы" + ], + "security": [ + { + "": [] + } + ] + } + }, "/api/games/{gameId}/screens": { "get": { "summary": "Получить экраны игры", @@ -2727,6 +2879,25 @@ } } }, + "EveningDetectiveServerCreateGameReviewBody": { + "type": "object", + "properties": { + "teamId": { + "type": "integer", + "format": "int32" + }, + "password": { + "type": "string" + }, + "rating": { + "type": "integer", + "format": "int32" + }, + "text": { + "type": "string" + } + } + }, "EveningDetectiveServerDeleteUserRoleBody": { "type": "object", "properties": { @@ -2749,6 +2920,14 @@ } } }, + "EveningDetectiveServerModerateGameReviewBody": { + "type": "object", + "properties": { + "status": { + "type": "string" + } + } + }, "EveningDetectiveServerPauseGameBody": { "type": "object" }, @@ -3147,6 +3326,17 @@ } } }, + "evening_detective_serverCreateGameReviewRsp": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "review": { + "$ref": "#/definitions/evening_detective_serverGameReview" + } + } + }, "evening_detective_serverCreateScreenSessionReq": { "type": "object" }, @@ -3313,6 +3503,40 @@ } } }, + "evening_detective_serverGameReview": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32" + }, + "gameId": { + "type": "integer", + "format": "int32" + }, + "teamId": { + "type": "integer", + "format": "int32" + }, + "teamName": { + "type": "string" + }, + "rating": { + "type": "integer", + "format": "int32" + }, + "text": { + "type": "string" + }, + "status": { + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time" + } + } + }, "evening_detective_serverGetConsentRsp": { "type": "object", "properties": { @@ -3383,6 +3607,29 @@ } } }, + "evening_detective_serverGetGameReviewsRsp": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "averageRating": { + "type": "number", + "format": "double" + }, + "reviewsCount": { + "type": "integer", + "format": "int32" + }, + "reviews": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/evening_detective_serverGameReview" + } + } + } + }, "evening_detective_serverGetGameRsp": { "type": "object", "properties": { @@ -3722,6 +3969,17 @@ } } }, + "evening_detective_serverModerateGameReviewRsp": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "review": { + "$ref": "#/definitions/evening_detective_serverGameReview" + } + } + }, "evening_detective_serverParticipationRsp": { "type": "object", "properties": { diff --git a/internal/app/game_reviews.go b/internal/app/game_reviews.go new file mode 100644 index 0000000..d70f100 --- /dev/null +++ b/internal/app/game_reviews.go @@ -0,0 +1,65 @@ +package app + +import ( + "context" + + "evening_detective_server/internal/modules/processor_jwt" + "evening_detective_server/internal/modules/roles" + "evening_detective_server/internal/repos/game_reviews_repo" + "evening_detective_server/proto" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + "google.golang.org/protobuf/types/known/timestamppb" +) + +func mapGameReview(r *game_reviews_repo.Review) *proto.GameReview { + return &proto.GameReview{Id: int32(r.ID), GameId: int32(r.GameID), TeamId: int32(r.TeamID), TeamName: r.TeamName, Rating: r.Rating, Text: r.Text, Status: r.Status, CreatedAt: timestamppb.New(r.CreatedAt)} +} + +func mapGameReviews(reviews []*game_reviews_repo.Review) []*proto.GameReview { + result := make([]*proto.GameReview, 0, len(reviews)) + for _, review := range reviews { + result = append(result, mapGameReview(review)) + } + return result +} + +func (s *server) CreateGameReview(ctx context.Context, req *proto.CreateGameReviewReq) (*proto.CreateGameReviewRsp, error) { + review, err := s.reviewService.Create(ctx, int(req.GameId), int(req.TeamId), req.Password, req.Rating, req.Text) + if err != nil { + return &proto.CreateGameReviewRsp{Error: err.Error()}, nil + } + return &proto.CreateGameReviewRsp{Review: mapGameReview(review)}, nil +} + +func (s *server) GetGameReviews(ctx context.Context, req *proto.GetGameReviewsReq) (*proto.GetGameReviewsRsp, error) { + reviews, average, count, err := s.reviewService.List(ctx, int(req.GameId), false) + if err != nil { + return &proto.GetGameReviewsRsp{Error: err.Error()}, nil + } + return &proto.GetGameReviewsRsp{AverageRating: average, ReviewsCount: count, Reviews: mapGameReviews(reviews)}, nil +} + +func (s *server) GetGameReviewsForModeration(ctx context.Context, req *proto.GetGameReviewsReq) (*proto.GetGameReviewsRsp, error) { + claims := ctx.Value("claims").(*processor_jwt.JWTClaims) + if !roles.HasRole(claims, roles.Admin) { + return nil, status.Error(codes.PermissionDenied, "permission denied") + } + reviews, average, count, err := s.reviewService.List(ctx, int(req.GameId), true) + if err != nil { + return &proto.GetGameReviewsRsp{Error: err.Error()}, nil + } + return &proto.GetGameReviewsRsp{AverageRating: average, ReviewsCount: count, Reviews: mapGameReviews(reviews)}, nil +} + +func (s *server) ModerateGameReview(ctx context.Context, req *proto.ModerateGameReviewReq) (*proto.ModerateGameReviewRsp, error) { + claims := ctx.Value("claims").(*processor_jwt.JWTClaims) + if !roles.HasRole(claims, roles.Admin) { + return nil, status.Error(codes.PermissionDenied, "permission denied") + } + review, err := s.reviewService.Moderate(ctx, int(req.Id), req.Status) + if err != nil { + return &proto.ModerateGameReviewRsp{Error: err.Error()}, nil + } + return &proto.ModerateGameReviewRsp{Review: mapGameReview(review)}, nil +} diff --git a/internal/app/server.go b/internal/app/server.go index 964b440..5d3efef 100644 --- a/internal/app/server.go +++ b/internal/app/server.go @@ -5,6 +5,7 @@ import ( "evening_detective_server/internal/repos/screen_sessions_repo" "evening_detective_server/internal/services/answer_service" "evening_detective_server/internal/services/file_service" + "evening_detective_server/internal/services/game_review_service" "evening_detective_server/internal/services/game_service" "evening_detective_server/internal/services/gameplay_service" "evening_detective_server/internal/services/participation_service" @@ -25,6 +26,7 @@ type server struct { gameService *game_service.GameService gameplayService *gameplay_service.GameplayService answerService *answer_service.AnswerService + reviewService *game_review_service.Service teamService *team_service.TeamService participationService *participation_service.ParticipationService screenRepo *screen_sessions_repo.ScreenSessionsRepo @@ -39,6 +41,7 @@ func NewServer( gameService *game_service.GameService, gameplayService *gameplay_service.GameplayService, answerService *answer_service.AnswerService, + reviewService *game_review_service.Service, teamService *team_service.TeamService, participationService *participation_service.ParticipationService, screenRepo *screen_sessions_repo.ScreenSessionsRepo, @@ -52,6 +55,7 @@ func NewServer( gameService: gameService, gameplayService: gameplayService, answerService: answerService, + reviewService: reviewService, teamService: teamService, participationService: participationService, screenRepo: screenRepo, diff --git a/internal/repos/game_reviews_repo/repo.go b/internal/repos/game_reviews_repo/repo.go new file mode 100644 index 0000000..9434d3d --- /dev/null +++ b/internal/repos/game_reviews_repo/repo.go @@ -0,0 +1,111 @@ +package game_reviews_repo + +import ( + "context" + "errors" + "time" + + "github.com/jackc/pgx/v5" + "github.com/jackc/pgx/v5/pgxpool" +) + +var ( + ErrReviewNotFound = errors.New("Отзыв не найден") + ErrReviewExists = errors.New("Отзыв от команды уже оставлен") +) + +type Review struct { + ID int + GameID int + TeamID int + TeamName string + Rating int32 + Text string + Status string + CreatedAt time.Time +} + +type Repo struct{ pool *pgxpool.Pool } + +func New(pool *pgxpool.Pool) *Repo { return &Repo{pool: pool} } + +func (r *Repo) Create(ctx context.Context, gameID, teamID int, rating int32, text string) (*Review, error) { + review := &Review{} + err := r.pool.QueryRow(ctx, ` + INSERT INTO game_reviews (game_id, team_id, rating, text) + SELECT $1, t.id, $3, $4 FROM teams t WHERE t.id = $2 AND t.game_id = $1 + ON CONFLICT (game_id, team_id) DO NOTHING + RETURNING id, game_id, team_id, rating, text, status, created_at`, gameID, teamID, rating, text).Scan( + &review.ID, &review.GameID, &review.TeamID, &review.Rating, &review.Text, &review.Status, &review.CreatedAt) + if errors.Is(err, pgx.ErrNoRows) { + var exists bool + if err := r.pool.QueryRow(ctx, `SELECT EXISTS (SELECT 1 FROM game_reviews WHERE game_id=$1 AND team_id=$2)`, gameID, teamID).Scan(&exists); err != nil { + return nil, err + } + if exists { + return nil, ErrReviewExists + } + return nil, errors.New("Команда не найдена") + } + return review, err +} + +func (r *Repo) GetByID(ctx context.Context, id int) (*Review, error) { + return r.queryOne(ctx, `WHERE r.id=$1`, id) +} + +func (r *Repo) List(ctx context.Context, gameID int, all bool) ([]*Review, float64, int32, error) { + where := "r.game_id=$1 AND r.status='approved'" + if all { + where = "r.game_id=$1" + } + rows, err := r.pool.Query(ctx, `SELECT r.id,r.game_id,r.team_id,t.name,r.rating,r.text,r.status,r.created_at + FROM game_reviews r JOIN teams t ON t.id=r.team_id WHERE `+where+` ORDER BY r.created_at DESC`, gameID) + if err != nil { + return nil, 0, 0, err + } + defer rows.Close() + var reviews []*Review + for rows.Next() { + review := &Review{} + if err := rows.Scan(&review.ID, &review.GameID, &review.TeamID, &review.TeamName, &review.Rating, &review.Text, &review.Status, &review.CreatedAt); err != nil { + return nil, 0, 0, err + } + reviews = append(reviews, review) + } + if err := rows.Err(); err != nil { + return nil, 0, 0, err + } + var average float64 + var count int64 + if err := r.pool.QueryRow(ctx, `SELECT COALESCE(AVG(rating),0), COUNT(*) FROM game_reviews WHERE game_id=$1 AND status='approved'`, gameID).Scan(&average, &count); err != nil { + return nil, 0, 0, err + } + return reviews, average, int32(count), nil +} + +func (r *Repo) Moderate(ctx context.Context, id int, status string) (*Review, error) { + review, err := r.queryOne(ctx, `WHERE r.id=$1`, id) + if err != nil { + return nil, err + } + if status == "approved" || status == "rejected" || status == "hidden" { + _, err = r.pool.Exec(ctx, `UPDATE game_reviews SET status=$2, moderated_at=NOW() WHERE id=$1`, id, status) + if err != nil { + return nil, err + } + return r.queryOne(ctx, `WHERE r.id=$1`, id) + } + return review, errors.New("Недопустимый статус модерации") +} + +func (r *Repo) queryOne(ctx context.Context, condition string, id int) (*Review, error) { + review := &Review{} + err := r.pool.QueryRow(ctx, `SELECT r.id,r.game_id,r.team_id,t.name,r.rating,r.text,r.status,r.created_at + FROM game_reviews r JOIN teams t ON t.id=r.team_id `+condition, id).Scan( + &review.ID, &review.GameID, &review.TeamID, &review.TeamName, &review.Rating, &review.Text, &review.Status, &review.CreatedAt) + if errors.Is(err, pgx.ErrNoRows) { + return nil, ErrReviewNotFound + } + return review, err +} diff --git a/internal/repos/teams_repo/participation.go b/internal/repos/teams_repo/participation.go index 6d78a1b..f7fed82 100644 --- a/internal/repos/teams_repo/participation.go +++ b/internal/repos/teams_repo/participation.go @@ -16,6 +16,8 @@ var ErrParticipationFinal = errors.New("Решение уже принято и const maxParticipationEmailAttempts = 8 +const maxReviewReminderAttempts = 8 + type Participation struct { TeamID int TeamName string @@ -28,6 +30,16 @@ type Participation struct { Attempts int } +type ReviewReminder struct { + TeamID int + TeamName string + GameID int + GameName string + Email string + Password string + Attempts int +} + func tokenHash(token string) ([]byte, error) { if len(token) != 64 { return nil, ErrParticipationLink @@ -134,3 +146,33 @@ func (r *TeamsRepo) FinishParticipationEmail(ctx context.Context, id, attempt in WHERE id=$1 AND participation_attempts=$2`, id, attempt, message) return err } + +func (r *TeamsRepo) ClaimReviewReminder(ctx context.Context) (*ReviewReminder, error) { + job := &ReviewReminder{} + err := r.pool.QueryRow(ctx, `WITH candidate AS ( + SELECT t.id FROM teams t JOIN games g ON g.id=t.game_id + WHERE t.captain_email<>'' AND t.review_reminder_sent_at IS NULL + AND t.review_reminder_attempts < $1 + AND (t.review_reminder_next_attempt_at IS NULL OR t.review_reminder_next_attempt_at <= NOW()) + AND g.status='finish' AND g.started_at <= NOW() - INTERVAL '16 hours' + AND NOT EXISTS (SELECT 1 FROM game_reviews r WHERE r.game_id=t.game_id AND r.team_id=t.id) + ORDER BY g.started_at, t.id + FOR UPDATE OF t SKIP LOCKED LIMIT 1 + ) UPDATE teams t SET review_reminder_next_attempt_at=NOW()+INTERVAL '5 minutes', + review_reminder_attempts=t.review_reminder_attempts+1 + FROM candidate c, games g WHERE t.id=c.id AND g.id=t.game_id + RETURNING t.id,t.name,t.game_id,g.name,t.captain_email,t.password,t.review_reminder_attempts`, maxReviewReminderAttempts).Scan( + &job.TeamID, &job.TeamName, &job.GameID, &job.GameName, &job.Email, &job.Password, &job.Attempts) + return job, err +} + +func (r *TeamsRepo) FinishReviewReminder(ctx context.Context, id, attempt int, sendErr error) error { + message := "" + if sendErr != nil { + message = sendErr.Error() + } + _, err := r.pool.Exec(ctx, `UPDATE teams SET review_reminder_error=$3, + review_reminder_sent_at=CASE WHEN $3='' THEN NOW() ELSE review_reminder_sent_at END + WHERE id=$1 AND review_reminder_attempts=$2`, id, attempt, message) + return err +} diff --git a/internal/services/game_review_service/service.go b/internal/services/game_review_service/service.go new file mode 100644 index 0000000..5179381 --- /dev/null +++ b/internal/services/game_review_service/service.go @@ -0,0 +1,116 @@ +package game_review_service + +import ( + "context" + "errors" + "fmt" + "html" + "log" + "net/url" + "strings" + "time" + + "evening_detective_server/internal/modules/email_sender" + "evening_detective_server/internal/repos/game_reviews_repo" + "evening_detective_server/internal/repos/games_repo" + "evening_detective_server/internal/repos/teams_repo" + "github.com/jackc/pgx/v5" +) + +var ( + ErrGameNotFinished = errors.New("Оценить можно только завершённую игру") + ErrInvalidReview = errors.New("Оценка должна быть от 1 до 5, текст обязателен") +) + +type Service struct { + reviews *game_reviews_repo.Repo + games *games_repo.GamesRepo + teams *teams_repo.TeamsRepo + appBaseURL string +} + +func New(reviews *game_reviews_repo.Repo, games *games_repo.GamesRepo, teams *teams_repo.TeamsRepo, appBaseURL string) *Service { + return &Service{reviews: reviews, games: games, teams: teams, appBaseURL: appBaseURL} +} + +func (s *Service) Create(ctx context.Context, gameID, teamID int, password string, rating int32, text string) (*game_reviews_repo.Review, error) { + if rating < 1 || rating > 5 || strings.TrimSpace(text) == "" { + return nil, ErrInvalidReview + } + team, err := s.teams.GetTeamByID(ctx, teamID) + if err != nil || team.GameId != gameID || team.Password != password || team.ParticipationStatus == "cancelled" { + return nil, teams_repo.ErrTeamNotFound + } + game, err := s.games.GetGameByID(ctx, gameID) + if err != nil { + return nil, err + } + if game.Status != "finish" { + return nil, ErrGameNotFinished + } + return s.reviews.Create(ctx, gameID, teamID, rating, strings.TrimSpace(text)) +} + +func (s *Service) List(ctx context.Context, gameID int, all bool) ([]*game_reviews_repo.Review, float64, int32, error) { + if _, err := s.games.GetGameByID(ctx, gameID); err != nil { + return nil, 0, 0, err + } + return s.reviews.List(ctx, gameID, all) +} + +func (s *Service) Moderate(ctx context.Context, id int, status string) (*game_reviews_repo.Review, error) { + return s.reviews.Moderate(ctx, id, status) +} + +func reviewReminderEmail(job *teams_repo.ReviewReminder, baseURL string) email_sender.Message { + link := strings.TrimRight(baseURL, "/") + "/team-story/" + fmt.Sprint(job.TeamID) + "?" + url.Values{"password": {job.Password}, "review": {"1"}}.Encode() + body := fmt.Sprintf("Команда «%s», поделитесь впечатлениями об игре «%s».\n\nОценка и отзыв займут пару минут: %s\n\nОтзыв можно оставить один раз от команды.", job.TeamName, job.GameName, link) + content := "

Как вам игра?

Команда «" + html.EscapeString(job.TeamName) + "» — «" + html.EscapeString(job.GameName) + "»

" + content += email_sender.ButtonHTML(link, "Оставить отзыв") + content += "

Оценка и отзыв займут пару минут. Отзыв можно оставить один раз от команды.

" + return email_sender.Message{To: job.Email, Subject: "Поделитесь впечатлениями об игре", Body: body, HTML: email_sender.WrapHTML(content, strings.TrimRight(baseURL, "/"))} +} + +func (s *Service) RunReviewReminderEmails(ctx context.Context, sender email_sender.IEmailSender) { + base, err := url.Parse(s.appBaseURL) + if err != nil || base.Host == "" || (base.Scheme != "https" && base.Scheme != "http") || base.User != nil || base.RawQuery != "" || base.Fragment != "" { + log.Print("review reminder email worker disabled: configure APP_BASE_URL") + return + } + ticker := time.NewTicker(time.Minute) + defer ticker.Stop() + for { + if err := s.sendReviewReminderEmails(ctx, sender); err != nil && ctx.Err() == nil { + log.Printf("review reminder email worker: %v", err) + } + select { + case <-ctx.Done(): + return + case <-ticker.C: + } + } +} + +func (s *Service) sendReviewReminderEmails(ctx context.Context, sender email_sender.IEmailSender) error { + for ctx.Err() == nil { + jobCtx, cancel := context.WithTimeout(ctx, time.Minute) + job, err := s.teams.ClaimReviewReminder(jobCtx) + if errors.Is(err, pgx.ErrNoRows) { + cancel() + return nil + } + if err != nil { + cancel() + return err + } + err = sender.Send(jobCtx, reviewReminderEmail(job, s.appBaseURL)) + cancel() + saveCtx, saveCancel := context.WithTimeout(ctx, 10*time.Second) + saveErr := s.teams.FinishReviewReminder(saveCtx, job.TeamID, job.Attempts, err) + saveCancel() + if saveErr != nil { + return saveErr + } + } + return ctx.Err() +} diff --git a/internal/services/game_review_service/service_test.go b/internal/services/game_review_service/service_test.go new file mode 100644 index 0000000..4cbf6c4 --- /dev/null +++ b/internal/services/game_review_service/service_test.go @@ -0,0 +1,20 @@ +package game_review_service + +import ( + "strings" + "testing" + + "evening_detective_server/internal/repos/teams_repo" +) + +func TestReviewReminderEmail(t *testing.T) { + message := reviewReminderEmail(&teams_repo.ReviewReminder{ + TeamID: 7, TeamName: "Шерлоки", GameName: "Ночь & тайна", Email: "captain@example.org", Password: "secret", + }, "https://app.example") + if message.To != "captain@example.org" || !strings.Contains(message.Body, "/team-story/7?password=secret&review=1") { + t.Fatalf("unexpected reminder email: %+v", message) + } + if !strings.Contains(message.HTML, "Ночь & тайна") { + t.Fatalf("game name is not escaped in HTML: %s", message.HTML) + } +} diff --git a/migrations/20260918120000_create_game_reviews.sql b/migrations/20260918120000_create_game_reviews.sql new file mode 100644 index 0000000..327441c --- /dev/null +++ b/migrations/20260918120000_create_game_reviews.sql @@ -0,0 +1,17 @@ +-- +goose Up +CREATE TABLE game_reviews ( + id SERIAL PRIMARY KEY, + game_id INTEGER NOT NULL REFERENCES games (id) ON DELETE CASCADE, + team_id INTEGER NOT NULL REFERENCES teams (id) ON DELETE CASCADE, + rating INTEGER NOT NULL CHECK (rating BETWEEN 1 AND 5), + text TEXT NOT NULL CHECK (length(btrim(text)) > 0), + status TEXT NOT NULL DEFAULT 'pending' CHECK (status IN ('pending', 'approved', 'rejected', 'hidden')), + created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), + moderated_at TIMESTAMPTZ, + UNIQUE (game_id, team_id) +); + +CREATE INDEX game_reviews_moderation ON game_reviews (status, created_at); + +-- +goose Down +DROP TABLE game_reviews; diff --git a/migrations/20260918130000_add_review_reminder.sql b/migrations/20260918130000_add_review_reminder.sql new file mode 100644 index 0000000..c13cc96 --- /dev/null +++ b/migrations/20260918130000_add_review_reminder.sql @@ -0,0 +1,13 @@ +-- +goose Up +ALTER TABLE teams + ADD COLUMN review_reminder_sent_at TIMESTAMPTZ, + ADD COLUMN review_reminder_attempts INTEGER NOT NULL DEFAULT 0, + ADD COLUMN review_reminder_next_attempt_at TIMESTAMPTZ, + ADD COLUMN review_reminder_error TEXT NOT NULL DEFAULT ''; + +-- +goose Down +ALTER TABLE teams + DROP COLUMN review_reminder_sent_at, + DROP COLUMN review_reminder_attempts, + DROP COLUMN review_reminder_next_attempt_at, + DROP COLUMN review_reminder_error; diff --git a/proto/main.pb.go b/proto/main.pb.go index 23036de..a244e8a 100644 --- a/proto/main.pb.go +++ b/proto/main.pb.go @@ -6880,6 +6880,450 @@ func (x *GetGameResultsRsp) GetTeams() []*TeamResult { return nil } +type GameReview struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + GameId int32 `protobuf:"varint,2,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` + TeamId int32 `protobuf:"varint,3,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` + TeamName string `protobuf:"bytes,4,opt,name=team_name,json=teamName,proto3" json:"team_name,omitempty"` + Rating int32 `protobuf:"varint,5,opt,name=rating,proto3" json:"rating,omitempty"` + Text string `protobuf:"bytes,6,opt,name=text,proto3" json:"text,omitempty"` + Status string `protobuf:"bytes,7,opt,name=status,proto3" json:"status,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GameReview) Reset() { + *x = GameReview{} + mi := &file_main_proto_msgTypes[125] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GameReview) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameReview) ProtoMessage() {} + +func (x *GameReview) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[125] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GameReview.ProtoReflect.Descriptor instead. +func (*GameReview) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{125} +} + +func (x *GameReview) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *GameReview) GetGameId() int32 { + if x != nil { + return x.GameId + } + return 0 +} + +func (x *GameReview) GetTeamId() int32 { + if x != nil { + return x.TeamId + } + return 0 +} + +func (x *GameReview) GetTeamName() string { + if x != nil { + return x.TeamName + } + return "" +} + +func (x *GameReview) GetRating() int32 { + if x != nil { + return x.Rating + } + return 0 +} + +func (x *GameReview) GetText() string { + if x != nil { + return x.Text + } + return "" +} + +func (x *GameReview) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *GameReview) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +type CreateGameReviewReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + GameId int32 `protobuf:"varint,1,opt,name=gameId,proto3" json:"gameId,omitempty"` + TeamId int32 `protobuf:"varint,2,opt,name=teamId,proto3" json:"teamId,omitempty"` + Password string `protobuf:"bytes,3,opt,name=password,proto3" json:"password,omitempty"` + Rating int32 `protobuf:"varint,4,opt,name=rating,proto3" json:"rating,omitempty"` + Text string `protobuf:"bytes,5,opt,name=text,proto3" json:"text,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateGameReviewReq) Reset() { + *x = CreateGameReviewReq{} + mi := &file_main_proto_msgTypes[126] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateGameReviewReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateGameReviewReq) ProtoMessage() {} + +func (x *CreateGameReviewReq) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[126] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateGameReviewReq.ProtoReflect.Descriptor instead. +func (*CreateGameReviewReq) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{126} +} + +func (x *CreateGameReviewReq) GetGameId() int32 { + if x != nil { + return x.GameId + } + return 0 +} + +func (x *CreateGameReviewReq) GetTeamId() int32 { + if x != nil { + return x.TeamId + } + return 0 +} + +func (x *CreateGameReviewReq) GetPassword() string { + if x != nil { + return x.Password + } + return "" +} + +func (x *CreateGameReviewReq) GetRating() int32 { + if x != nil { + return x.Rating + } + return 0 +} + +func (x *CreateGameReviewReq) GetText() string { + if x != nil { + return x.Text + } + return "" +} + +type CreateGameReviewRsp struct { + state protoimpl.MessageState `protogen:"open.v1"` + Error string `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` + Review *GameReview `protobuf:"bytes,2,opt,name=review,proto3" json:"review,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateGameReviewRsp) Reset() { + *x = CreateGameReviewRsp{} + mi := &file_main_proto_msgTypes[127] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateGameReviewRsp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateGameReviewRsp) ProtoMessage() {} + +func (x *CreateGameReviewRsp) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[127] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateGameReviewRsp.ProtoReflect.Descriptor instead. +func (*CreateGameReviewRsp) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{127} +} + +func (x *CreateGameReviewRsp) GetError() string { + if x != nil { + return x.Error + } + return "" +} + +func (x *CreateGameReviewRsp) GetReview() *GameReview { + if x != nil { + return x.Review + } + return nil +} + +type GetGameReviewsReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + GameId int32 `protobuf:"varint,1,opt,name=gameId,proto3" json:"gameId,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetGameReviewsReq) Reset() { + *x = GetGameReviewsReq{} + mi := &file_main_proto_msgTypes[128] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetGameReviewsReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetGameReviewsReq) ProtoMessage() {} + +func (x *GetGameReviewsReq) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[128] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetGameReviewsReq.ProtoReflect.Descriptor instead. +func (*GetGameReviewsReq) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{128} +} + +func (x *GetGameReviewsReq) GetGameId() int32 { + if x != nil { + return x.GameId + } + return 0 +} + +type GetGameReviewsRsp struct { + state protoimpl.MessageState `protogen:"open.v1"` + Error string `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` + AverageRating float64 `protobuf:"fixed64,2,opt,name=average_rating,json=averageRating,proto3" json:"average_rating,omitempty"` + ReviewsCount int32 `protobuf:"varint,3,opt,name=reviews_count,json=reviewsCount,proto3" json:"reviews_count,omitempty"` + Reviews []*GameReview `protobuf:"bytes,4,rep,name=reviews,proto3" json:"reviews,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetGameReviewsRsp) Reset() { + *x = GetGameReviewsRsp{} + mi := &file_main_proto_msgTypes[129] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetGameReviewsRsp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetGameReviewsRsp) ProtoMessage() {} + +func (x *GetGameReviewsRsp) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[129] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetGameReviewsRsp.ProtoReflect.Descriptor instead. +func (*GetGameReviewsRsp) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{129} +} + +func (x *GetGameReviewsRsp) GetError() string { + if x != nil { + return x.Error + } + return "" +} + +func (x *GetGameReviewsRsp) GetAverageRating() float64 { + if x != nil { + return x.AverageRating + } + return 0 +} + +func (x *GetGameReviewsRsp) GetReviewsCount() int32 { + if x != nil { + return x.ReviewsCount + } + return 0 +} + +func (x *GetGameReviewsRsp) GetReviews() []*GameReview { + if x != nil { + return x.Reviews + } + return nil +} + +type ModerateGameReviewReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ModerateGameReviewReq) Reset() { + *x = ModerateGameReviewReq{} + mi := &file_main_proto_msgTypes[130] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ModerateGameReviewReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ModerateGameReviewReq) ProtoMessage() {} + +func (x *ModerateGameReviewReq) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[130] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ModerateGameReviewReq.ProtoReflect.Descriptor instead. +func (*ModerateGameReviewReq) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{130} +} + +func (x *ModerateGameReviewReq) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *ModerateGameReviewReq) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +type ModerateGameReviewRsp struct { + state protoimpl.MessageState `protogen:"open.v1"` + Error string `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` + Review *GameReview `protobuf:"bytes,2,opt,name=review,proto3" json:"review,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ModerateGameReviewRsp) Reset() { + *x = ModerateGameReviewRsp{} + mi := &file_main_proto_msgTypes[131] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ModerateGameReviewRsp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ModerateGameReviewRsp) ProtoMessage() {} + +func (x *ModerateGameReviewRsp) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[131] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ModerateGameReviewRsp.ProtoReflect.Descriptor instead. +func (*ModerateGameReviewRsp) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{131} +} + +func (x *ModerateGameReviewRsp) GetError() string { + if x != nil { + return x.Error + } + return "" +} + +func (x *ModerateGameReviewRsp) GetReview() *GameReview { + if x != nil { + return x.Review + } + return nil +} + type UpdateGameReq struct { state protoimpl.MessageState `protogen:"open.v1"` Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` @@ -6894,7 +7338,7 @@ type UpdateGameReq struct { func (x *UpdateGameReq) Reset() { *x = UpdateGameReq{} - mi := &file_main_proto_msgTypes[125] + mi := &file_main_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6906,7 +7350,7 @@ func (x *UpdateGameReq) String() string { func (*UpdateGameReq) ProtoMessage() {} func (x *UpdateGameReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[125] + mi := &file_main_proto_msgTypes[132] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6919,7 +7363,7 @@ func (x *UpdateGameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateGameReq.ProtoReflect.Descriptor instead. func (*UpdateGameReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{125} + return file_main_proto_rawDescGZIP(), []int{132} } func (x *UpdateGameReq) GetId() int32 { @@ -6973,7 +7417,7 @@ type UpdateGameRsp struct { func (x *UpdateGameRsp) Reset() { *x = UpdateGameRsp{} - mi := &file_main_proto_msgTypes[126] + mi := &file_main_proto_msgTypes[133] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6985,7 +7429,7 @@ func (x *UpdateGameRsp) String() string { func (*UpdateGameRsp) ProtoMessage() {} func (x *UpdateGameRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[126] + mi := &file_main_proto_msgTypes[133] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6998,7 +7442,7 @@ func (x *UpdateGameRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateGameRsp.ProtoReflect.Descriptor instead. func (*UpdateGameRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{126} + return file_main_proto_rawDescGZIP(), []int{133} } func (x *UpdateGameRsp) GetError() string { @@ -7017,7 +7461,7 @@ type StartGameReq struct { func (x *StartGameReq) Reset() { *x = StartGameReq{} - mi := &file_main_proto_msgTypes[127] + mi := &file_main_proto_msgTypes[134] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7029,7 +7473,7 @@ func (x *StartGameReq) String() string { func (*StartGameReq) ProtoMessage() {} func (x *StartGameReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[127] + mi := &file_main_proto_msgTypes[134] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7042,7 +7486,7 @@ func (x *StartGameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use StartGameReq.ProtoReflect.Descriptor instead. func (*StartGameReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{127} + return file_main_proto_rawDescGZIP(), []int{134} } func (x *StartGameReq) GetId() int32 { @@ -7061,7 +7505,7 @@ type StartGameRsp struct { func (x *StartGameRsp) Reset() { *x = StartGameRsp{} - mi := &file_main_proto_msgTypes[128] + mi := &file_main_proto_msgTypes[135] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7073,7 +7517,7 @@ func (x *StartGameRsp) String() string { func (*StartGameRsp) ProtoMessage() {} func (x *StartGameRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[128] + mi := &file_main_proto_msgTypes[135] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7086,7 +7530,7 @@ func (x *StartGameRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use StartGameRsp.ProtoReflect.Descriptor instead. func (*StartGameRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{128} + return file_main_proto_rawDescGZIP(), []int{135} } func (x *StartGameRsp) GetError() string { @@ -7105,7 +7549,7 @@ type PauseGameReq struct { func (x *PauseGameReq) Reset() { *x = PauseGameReq{} - mi := &file_main_proto_msgTypes[129] + mi := &file_main_proto_msgTypes[136] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7117,7 +7561,7 @@ func (x *PauseGameReq) String() string { func (*PauseGameReq) ProtoMessage() {} func (x *PauseGameReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[129] + mi := &file_main_proto_msgTypes[136] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7130,7 +7574,7 @@ func (x *PauseGameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use PauseGameReq.ProtoReflect.Descriptor instead. func (*PauseGameReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{129} + return file_main_proto_rawDescGZIP(), []int{136} } func (x *PauseGameReq) GetId() int32 { @@ -7149,7 +7593,7 @@ type PauseGameRsp struct { func (x *PauseGameRsp) Reset() { *x = PauseGameRsp{} - mi := &file_main_proto_msgTypes[130] + mi := &file_main_proto_msgTypes[137] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7161,7 +7605,7 @@ func (x *PauseGameRsp) String() string { func (*PauseGameRsp) ProtoMessage() {} func (x *PauseGameRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[130] + mi := &file_main_proto_msgTypes[137] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7174,7 +7618,7 @@ func (x *PauseGameRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use PauseGameRsp.ProtoReflect.Descriptor instead. func (*PauseGameRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{130} + return file_main_proto_rawDescGZIP(), []int{137} } func (x *PauseGameRsp) GetError() string { @@ -7193,7 +7637,7 @@ type PlayGameReq struct { func (x *PlayGameReq) Reset() { *x = PlayGameReq{} - mi := &file_main_proto_msgTypes[131] + mi := &file_main_proto_msgTypes[138] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7205,7 +7649,7 @@ func (x *PlayGameReq) String() string { func (*PlayGameReq) ProtoMessage() {} func (x *PlayGameReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[131] + mi := &file_main_proto_msgTypes[138] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7218,7 +7662,7 @@ func (x *PlayGameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayGameReq.ProtoReflect.Descriptor instead. func (*PlayGameReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{131} + return file_main_proto_rawDescGZIP(), []int{138} } func (x *PlayGameReq) GetId() int32 { @@ -7237,7 +7681,7 @@ type PlayGameRsp struct { func (x *PlayGameRsp) Reset() { *x = PlayGameRsp{} - mi := &file_main_proto_msgTypes[132] + mi := &file_main_proto_msgTypes[139] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7249,7 +7693,7 @@ func (x *PlayGameRsp) String() string { func (*PlayGameRsp) ProtoMessage() {} func (x *PlayGameRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[132] + mi := &file_main_proto_msgTypes[139] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7262,7 +7706,7 @@ func (x *PlayGameRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayGameRsp.ProtoReflect.Descriptor instead. func (*PlayGameRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{132} + return file_main_proto_rawDescGZIP(), []int{139} } func (x *PlayGameRsp) GetError() string { @@ -7281,7 +7725,7 @@ type FinishGameReq struct { func (x *FinishGameReq) Reset() { *x = FinishGameReq{} - mi := &file_main_proto_msgTypes[133] + mi := &file_main_proto_msgTypes[140] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7293,7 +7737,7 @@ func (x *FinishGameReq) String() string { func (*FinishGameReq) ProtoMessage() {} func (x *FinishGameReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[133] + mi := &file_main_proto_msgTypes[140] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7306,7 +7750,7 @@ func (x *FinishGameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use FinishGameReq.ProtoReflect.Descriptor instead. func (*FinishGameReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{133} + return file_main_proto_rawDescGZIP(), []int{140} } func (x *FinishGameReq) GetId() int32 { @@ -7325,7 +7769,7 @@ type FinishGameRsp struct { func (x *FinishGameRsp) Reset() { *x = FinishGameRsp{} - mi := &file_main_proto_msgTypes[134] + mi := &file_main_proto_msgTypes[141] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7337,7 +7781,7 @@ func (x *FinishGameRsp) String() string { func (*FinishGameRsp) ProtoMessage() {} func (x *FinishGameRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[134] + mi := &file_main_proto_msgTypes[141] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7350,7 +7794,7 @@ func (x *FinishGameRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use FinishGameRsp.ProtoReflect.Descriptor instead. func (*FinishGameRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{134} + return file_main_proto_rawDescGZIP(), []int{141} } func (x *FinishGameRsp) GetError() string { @@ -7369,7 +7813,7 @@ type ResetGameReq struct { func (x *ResetGameReq) Reset() { *x = ResetGameReq{} - mi := &file_main_proto_msgTypes[135] + mi := &file_main_proto_msgTypes[142] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7381,7 +7825,7 @@ func (x *ResetGameReq) String() string { func (*ResetGameReq) ProtoMessage() {} func (x *ResetGameReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[135] + mi := &file_main_proto_msgTypes[142] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7394,7 +7838,7 @@ func (x *ResetGameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ResetGameReq.ProtoReflect.Descriptor instead. func (*ResetGameReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{135} + return file_main_proto_rawDescGZIP(), []int{142} } func (x *ResetGameReq) GetId() int32 { @@ -7413,7 +7857,7 @@ type ResetGameRsp struct { func (x *ResetGameRsp) Reset() { *x = ResetGameRsp{} - mi := &file_main_proto_msgTypes[136] + mi := &file_main_proto_msgTypes[143] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7425,7 +7869,7 @@ func (x *ResetGameRsp) String() string { func (*ResetGameRsp) ProtoMessage() {} func (x *ResetGameRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[136] + mi := &file_main_proto_msgTypes[143] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7438,7 +7882,7 @@ func (x *ResetGameRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use ResetGameRsp.ProtoReflect.Descriptor instead. func (*ResetGameRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{136} + return file_main_proto_rawDescGZIP(), []int{143} } func (x *ResetGameRsp) GetError() string { @@ -7457,7 +7901,7 @@ type DeleteGameReq struct { func (x *DeleteGameReq) Reset() { *x = DeleteGameReq{} - mi := &file_main_proto_msgTypes[137] + mi := &file_main_proto_msgTypes[144] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7469,7 +7913,7 @@ func (x *DeleteGameReq) String() string { func (*DeleteGameReq) ProtoMessage() {} func (x *DeleteGameReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[137] + mi := &file_main_proto_msgTypes[144] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7482,7 +7926,7 @@ func (x *DeleteGameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteGameReq.ProtoReflect.Descriptor instead. func (*DeleteGameReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{137} + return file_main_proto_rawDescGZIP(), []int{144} } func (x *DeleteGameReq) GetId() int32 { @@ -7501,7 +7945,7 @@ type DeleteGameRsp struct { func (x *DeleteGameRsp) Reset() { *x = DeleteGameRsp{} - mi := &file_main_proto_msgTypes[138] + mi := &file_main_proto_msgTypes[145] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7513,7 +7957,7 @@ func (x *DeleteGameRsp) String() string { func (*DeleteGameRsp) ProtoMessage() {} func (x *DeleteGameRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[138] + mi := &file_main_proto_msgTypes[145] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7526,7 +7970,7 @@ func (x *DeleteGameRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteGameRsp.ProtoReflect.Descriptor instead. func (*DeleteGameRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{138} + return file_main_proto_rawDescGZIP(), []int{145} } func (x *DeleteGameRsp) GetError() string { @@ -7547,7 +7991,7 @@ type AddTeamReq struct { func (x *AddTeamReq) Reset() { *x = AddTeamReq{} - mi := &file_main_proto_msgTypes[139] + mi := &file_main_proto_msgTypes[146] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7559,7 +8003,7 @@ func (x *AddTeamReq) String() string { func (*AddTeamReq) ProtoMessage() {} func (x *AddTeamReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[139] + mi := &file_main_proto_msgTypes[146] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7572,7 +8016,7 @@ func (x *AddTeamReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AddTeamReq.ProtoReflect.Descriptor instead. func (*AddTeamReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{139} + return file_main_proto_rawDescGZIP(), []int{146} } func (x *AddTeamReq) GetGameId() int32 { @@ -7607,7 +8051,7 @@ type AddTeamRsp struct { func (x *AddTeamRsp) Reset() { *x = AddTeamRsp{} - mi := &file_main_proto_msgTypes[140] + mi := &file_main_proto_msgTypes[147] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7619,7 +8063,7 @@ func (x *AddTeamRsp) String() string { func (*AddTeamRsp) ProtoMessage() {} func (x *AddTeamRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[140] + mi := &file_main_proto_msgTypes[147] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7632,7 +8076,7 @@ func (x *AddTeamRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use AddTeamRsp.ProtoReflect.Descriptor instead. func (*AddTeamRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{140} + return file_main_proto_rawDescGZIP(), []int{147} } func (x *AddTeamRsp) GetError() string { @@ -7666,7 +8110,7 @@ type UpdateTeamReq struct { func (x *UpdateTeamReq) Reset() { *x = UpdateTeamReq{} - mi := &file_main_proto_msgTypes[141] + mi := &file_main_proto_msgTypes[148] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7678,7 +8122,7 @@ func (x *UpdateTeamReq) String() string { func (*UpdateTeamReq) ProtoMessage() {} func (x *UpdateTeamReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[141] + mi := &file_main_proto_msgTypes[148] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7691,7 +8135,7 @@ func (x *UpdateTeamReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateTeamReq.ProtoReflect.Descriptor instead. func (*UpdateTeamReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{141} + return file_main_proto_rawDescGZIP(), []int{148} } func (x *UpdateTeamReq) GetId() int32 { @@ -7717,7 +8161,7 @@ type UpdateTeamRsp struct { func (x *UpdateTeamRsp) Reset() { *x = UpdateTeamRsp{} - mi := &file_main_proto_msgTypes[142] + mi := &file_main_proto_msgTypes[149] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7729,7 +8173,7 @@ func (x *UpdateTeamRsp) String() string { func (*UpdateTeamRsp) ProtoMessage() {} func (x *UpdateTeamRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[142] + mi := &file_main_proto_msgTypes[149] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7742,7 +8186,7 @@ func (x *UpdateTeamRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateTeamRsp.ProtoReflect.Descriptor instead. func (*UpdateTeamRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{142} + return file_main_proto_rawDescGZIP(), []int{149} } func (x *UpdateTeamRsp) GetError() string { @@ -7761,7 +8205,7 @@ type DeleteTeamReq struct { func (x *DeleteTeamReq) Reset() { *x = DeleteTeamReq{} - mi := &file_main_proto_msgTypes[143] + mi := &file_main_proto_msgTypes[150] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7773,7 +8217,7 @@ func (x *DeleteTeamReq) String() string { func (*DeleteTeamReq) ProtoMessage() {} func (x *DeleteTeamReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[143] + mi := &file_main_proto_msgTypes[150] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7786,7 +8230,7 @@ func (x *DeleteTeamReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTeamReq.ProtoReflect.Descriptor instead. func (*DeleteTeamReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{143} + return file_main_proto_rawDescGZIP(), []int{150} } func (x *DeleteTeamReq) GetId() int64 { @@ -7805,7 +8249,7 @@ type DeleteTeamRsp struct { func (x *DeleteTeamRsp) Reset() { *x = DeleteTeamRsp{} - mi := &file_main_proto_msgTypes[144] + mi := &file_main_proto_msgTypes[151] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7817,7 +8261,7 @@ func (x *DeleteTeamRsp) String() string { func (*DeleteTeamRsp) ProtoMessage() {} func (x *DeleteTeamRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[144] + mi := &file_main_proto_msgTypes[151] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7830,7 +8274,7 @@ func (x *DeleteTeamRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTeamRsp.ProtoReflect.Descriptor instead. func (*DeleteTeamRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{144} + return file_main_proto_rawDescGZIP(), []int{151} } func (x *DeleteTeamRsp) GetError() string { @@ -7850,7 +8294,7 @@ type GiveTeamApplicationsReq struct { func (x *GiveTeamApplicationsReq) Reset() { *x = GiveTeamApplicationsReq{} - mi := &file_main_proto_msgTypes[145] + mi := &file_main_proto_msgTypes[152] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7862,7 +8306,7 @@ func (x *GiveTeamApplicationsReq) String() string { func (*GiveTeamApplicationsReq) ProtoMessage() {} func (x *GiveTeamApplicationsReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[145] + mi := &file_main_proto_msgTypes[152] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7875,7 +8319,7 @@ func (x *GiveTeamApplicationsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GiveTeamApplicationsReq.ProtoReflect.Descriptor instead. func (*GiveTeamApplicationsReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{145} + return file_main_proto_rawDescGZIP(), []int{152} } func (x *GiveTeamApplicationsReq) GetId() int64 { @@ -7901,7 +8345,7 @@ type GiveTeamApplicationsRsp struct { func (x *GiveTeamApplicationsRsp) Reset() { *x = GiveTeamApplicationsRsp{} - mi := &file_main_proto_msgTypes[146] + mi := &file_main_proto_msgTypes[153] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7913,7 +8357,7 @@ func (x *GiveTeamApplicationsRsp) String() string { func (*GiveTeamApplicationsRsp) ProtoMessage() {} func (x *GiveTeamApplicationsRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[146] + mi := &file_main_proto_msgTypes[153] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7926,7 +8370,7 @@ func (x *GiveTeamApplicationsRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GiveTeamApplicationsRsp.ProtoReflect.Descriptor instead. func (*GiveTeamApplicationsRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{146} + return file_main_proto_rawDescGZIP(), []int{153} } func (x *GiveTeamApplicationsRsp) GetError() string { @@ -7946,7 +8390,7 @@ type GetTeamStoryReq struct { func (x *GetTeamStoryReq) Reset() { *x = GetTeamStoryReq{} - mi := &file_main_proto_msgTypes[147] + mi := &file_main_proto_msgTypes[154] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7958,7 +8402,7 @@ func (x *GetTeamStoryReq) String() string { func (*GetTeamStoryReq) ProtoMessage() {} func (x *GetTeamStoryReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[147] + mi := &file_main_proto_msgTypes[154] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7971,7 +8415,7 @@ func (x *GetTeamStoryReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTeamStoryReq.ProtoReflect.Descriptor instead. func (*GetTeamStoryReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{147} + return file_main_proto_rawDescGZIP(), []int{154} } func (x *GetTeamStoryReq) GetId() int64 { @@ -8000,7 +8444,7 @@ type GetTeamStoryRsp struct { func (x *GetTeamStoryRsp) Reset() { *x = GetTeamStoryRsp{} - mi := &file_main_proto_msgTypes[148] + mi := &file_main_proto_msgTypes[155] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8012,7 +8456,7 @@ func (x *GetTeamStoryRsp) String() string { func (*GetTeamStoryRsp) ProtoMessage() {} func (x *GetTeamStoryRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[148] + mi := &file_main_proto_msgTypes[155] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8025,7 +8469,7 @@ func (x *GetTeamStoryRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTeamStoryRsp.ProtoReflect.Descriptor instead. func (*GetTeamStoryRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{148} + return file_main_proto_rawDescGZIP(), []int{155} } func (x *GetTeamStoryRsp) GetError() string { @@ -8066,7 +8510,7 @@ type TeamAction struct { func (x *TeamAction) Reset() { *x = TeamAction{} - mi := &file_main_proto_msgTypes[149] + mi := &file_main_proto_msgTypes[156] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8078,7 +8522,7 @@ func (x *TeamAction) String() string { func (*TeamAction) ProtoMessage() {} func (x *TeamAction) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[149] + mi := &file_main_proto_msgTypes[156] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8091,7 +8535,7 @@ func (x *TeamAction) ProtoReflect() protoreflect.Message { // Deprecated: Use TeamAction.ProtoReflect.Descriptor instead. func (*TeamAction) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{149} + return file_main_proto_rawDescGZIP(), []int{156} } func (x *TeamAction) GetCode() string { @@ -8119,7 +8563,7 @@ type AddTeamActionReq struct { func (x *AddTeamActionReq) Reset() { *x = AddTeamActionReq{} - mi := &file_main_proto_msgTypes[150] + mi := &file_main_proto_msgTypes[157] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8131,7 +8575,7 @@ func (x *AddTeamActionReq) String() string { func (*AddTeamActionReq) ProtoMessage() {} func (x *AddTeamActionReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[150] + mi := &file_main_proto_msgTypes[157] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8144,7 +8588,7 @@ func (x *AddTeamActionReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AddTeamActionReq.ProtoReflect.Descriptor instead. func (*AddTeamActionReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{150} + return file_main_proto_rawDescGZIP(), []int{157} } func (x *AddTeamActionReq) GetId() int64 { @@ -8177,7 +8621,7 @@ type AddTeamActionRsp struct { func (x *AddTeamActionRsp) Reset() { *x = AddTeamActionRsp{} - mi := &file_main_proto_msgTypes[151] + mi := &file_main_proto_msgTypes[158] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8189,7 +8633,7 @@ func (x *AddTeamActionRsp) String() string { func (*AddTeamActionRsp) ProtoMessage() {} func (x *AddTeamActionRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[151] + mi := &file_main_proto_msgTypes[158] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8202,7 +8646,7 @@ func (x *AddTeamActionRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use AddTeamActionRsp.ProtoReflect.Descriptor instead. func (*AddTeamActionRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{151} + return file_main_proto_rawDescGZIP(), []int{158} } func (x *AddTeamActionRsp) GetError() string { @@ -8221,7 +8665,7 @@ type DeleteLastTeamActionReq struct { func (x *DeleteLastTeamActionReq) Reset() { *x = DeleteLastTeamActionReq{} - mi := &file_main_proto_msgTypes[152] + mi := &file_main_proto_msgTypes[159] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8233,7 +8677,7 @@ func (x *DeleteLastTeamActionReq) String() string { func (*DeleteLastTeamActionReq) ProtoMessage() {} func (x *DeleteLastTeamActionReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[152] + mi := &file_main_proto_msgTypes[159] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8246,7 +8690,7 @@ func (x *DeleteLastTeamActionReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteLastTeamActionReq.ProtoReflect.Descriptor instead. func (*DeleteLastTeamActionReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{152} + return file_main_proto_rawDescGZIP(), []int{159} } func (x *DeleteLastTeamActionReq) GetId() int64 { @@ -8265,7 +8709,7 @@ type DeleteLastTeamActionRsp struct { func (x *DeleteLastTeamActionRsp) Reset() { *x = DeleteLastTeamActionRsp{} - mi := &file_main_proto_msgTypes[153] + mi := &file_main_proto_msgTypes[160] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8277,7 +8721,7 @@ func (x *DeleteLastTeamActionRsp) String() string { func (*DeleteLastTeamActionRsp) ProtoMessage() {} func (x *DeleteLastTeamActionRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[153] + mi := &file_main_proto_msgTypes[160] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8290,7 +8734,7 @@ func (x *DeleteLastTeamActionRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteLastTeamActionRsp.ProtoReflect.Descriptor instead. func (*DeleteLastTeamActionRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{153} + return file_main_proto_rawDescGZIP(), []int{160} } func (x *DeleteLastTeamActionRsp) GetError() string { @@ -8310,7 +8754,7 @@ type GetTeamAnswersReq struct { func (x *GetTeamAnswersReq) Reset() { *x = GetTeamAnswersReq{} - mi := &file_main_proto_msgTypes[154] + mi := &file_main_proto_msgTypes[161] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8322,7 +8766,7 @@ func (x *GetTeamAnswersReq) String() string { func (*GetTeamAnswersReq) ProtoMessage() {} func (x *GetTeamAnswersReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[154] + mi := &file_main_proto_msgTypes[161] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8335,7 +8779,7 @@ func (x *GetTeamAnswersReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTeamAnswersReq.ProtoReflect.Descriptor instead. func (*GetTeamAnswersReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{154} + return file_main_proto_rawDescGZIP(), []int{161} } func (x *GetTeamAnswersReq) GetId() int64 { @@ -8362,7 +8806,7 @@ type GetTeamAnswersRsp struct { func (x *GetTeamAnswersRsp) Reset() { *x = GetTeamAnswersRsp{} - mi := &file_main_proto_msgTypes[155] + mi := &file_main_proto_msgTypes[162] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8374,7 +8818,7 @@ func (x *GetTeamAnswersRsp) String() string { func (*GetTeamAnswersRsp) ProtoMessage() {} func (x *GetTeamAnswersRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[155] + mi := &file_main_proto_msgTypes[162] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8387,7 +8831,7 @@ func (x *GetTeamAnswersRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTeamAnswersRsp.ProtoReflect.Descriptor instead. func (*GetTeamAnswersRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{155} + return file_main_proto_rawDescGZIP(), []int{162} } func (x *GetTeamAnswersRsp) GetError() string { @@ -8415,7 +8859,7 @@ type SubmitTeamAnswersReq struct { func (x *SubmitTeamAnswersReq) Reset() { *x = SubmitTeamAnswersReq{} - mi := &file_main_proto_msgTypes[156] + mi := &file_main_proto_msgTypes[163] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8427,7 +8871,7 @@ func (x *SubmitTeamAnswersReq) String() string { func (*SubmitTeamAnswersReq) ProtoMessage() {} func (x *SubmitTeamAnswersReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[156] + mi := &file_main_proto_msgTypes[163] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8440,7 +8884,7 @@ func (x *SubmitTeamAnswersReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitTeamAnswersReq.ProtoReflect.Descriptor instead. func (*SubmitTeamAnswersReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{156} + return file_main_proto_rawDescGZIP(), []int{163} } func (x *SubmitTeamAnswersReq) GetId() int64 { @@ -8473,7 +8917,7 @@ type SubmitTeamAnswersRsp struct { func (x *SubmitTeamAnswersRsp) Reset() { *x = SubmitTeamAnswersRsp{} - mi := &file_main_proto_msgTypes[157] + mi := &file_main_proto_msgTypes[164] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8485,7 +8929,7 @@ func (x *SubmitTeamAnswersRsp) String() string { func (*SubmitTeamAnswersRsp) ProtoMessage() {} func (x *SubmitTeamAnswersRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[157] + mi := &file_main_proto_msgTypes[164] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8498,7 +8942,7 @@ func (x *SubmitTeamAnswersRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitTeamAnswersRsp.ProtoReflect.Descriptor instead. func (*SubmitTeamAnswersRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{157} + return file_main_proto_rawDescGZIP(), []int{164} } func (x *SubmitTeamAnswersRsp) GetError() string { @@ -8520,7 +8964,7 @@ type SetTeamAnswerScoreReq struct { func (x *SetTeamAnswerScoreReq) Reset() { *x = SetTeamAnswerScoreReq{} - mi := &file_main_proto_msgTypes[158] + mi := &file_main_proto_msgTypes[165] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8532,7 +8976,7 @@ func (x *SetTeamAnswerScoreReq) String() string { func (*SetTeamAnswerScoreReq) ProtoMessage() {} func (x *SetTeamAnswerScoreReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[158] + mi := &file_main_proto_msgTypes[165] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8545,7 +8989,7 @@ func (x *SetTeamAnswerScoreReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SetTeamAnswerScoreReq.ProtoReflect.Descriptor instead. func (*SetTeamAnswerScoreReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{158} + return file_main_proto_rawDescGZIP(), []int{165} } func (x *SetTeamAnswerScoreReq) GetId() int64 { @@ -8578,7 +9022,7 @@ type SetTeamAnswerScoreRsp struct { func (x *SetTeamAnswerScoreRsp) Reset() { *x = SetTeamAnswerScoreRsp{} - mi := &file_main_proto_msgTypes[159] + mi := &file_main_proto_msgTypes[166] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8590,7 +9034,7 @@ func (x *SetTeamAnswerScoreRsp) String() string { func (*SetTeamAnswerScoreRsp) ProtoMessage() {} func (x *SetTeamAnswerScoreRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[159] + mi := &file_main_proto_msgTypes[166] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8603,7 +9047,7 @@ func (x *SetTeamAnswerScoreRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use SetTeamAnswerScoreRsp.ProtoReflect.Descriptor instead. func (*SetTeamAnswerScoreRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{159} + return file_main_proto_rawDescGZIP(), []int{166} } func (x *SetTeamAnswerScoreRsp) GetError() string { @@ -8623,7 +9067,7 @@ type UpdateScenarioBackgroundReq struct { func (x *UpdateScenarioBackgroundReq) Reset() { *x = UpdateScenarioBackgroundReq{} - mi := &file_main_proto_msgTypes[160] + mi := &file_main_proto_msgTypes[167] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8635,7 +9079,7 @@ func (x *UpdateScenarioBackgroundReq) String() string { func (*UpdateScenarioBackgroundReq) ProtoMessage() {} func (x *UpdateScenarioBackgroundReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[160] + mi := &file_main_proto_msgTypes[167] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8648,7 +9092,7 @@ func (x *UpdateScenarioBackgroundReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateScenarioBackgroundReq.ProtoReflect.Descriptor instead. func (*UpdateScenarioBackgroundReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{160} + return file_main_proto_rawDescGZIP(), []int{167} } func (x *UpdateScenarioBackgroundReq) GetId() int32 { @@ -8674,7 +9118,7 @@ type UpdateScenarioBackgroundRsp struct { func (x *UpdateScenarioBackgroundRsp) Reset() { *x = UpdateScenarioBackgroundRsp{} - mi := &file_main_proto_msgTypes[161] + mi := &file_main_proto_msgTypes[168] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8686,7 +9130,7 @@ func (x *UpdateScenarioBackgroundRsp) String() string { func (*UpdateScenarioBackgroundRsp) ProtoMessage() {} func (x *UpdateScenarioBackgroundRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[161] + mi := &file_main_proto_msgTypes[168] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8699,7 +9143,7 @@ func (x *UpdateScenarioBackgroundRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateScenarioBackgroundRsp.ProtoReflect.Descriptor instead. func (*UpdateScenarioBackgroundRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{161} + return file_main_proto_rawDescGZIP(), []int{168} } func (x *UpdateScenarioBackgroundRsp) GetError() string { @@ -9148,7 +9592,40 @@ const file_main_proto_rawDesc = "" + "\x11GetGameResultsRsp\x12\x14\n" + "\x05error\x18\x01 \x01(\tR\x05error\x12M\n" + "\tquestions\x18\x02 \x03(\v2/.crabs.evening_detective_server.ResultsQuestionR\tquestions\x12@\n" + - "\x05teams\x18\x03 \x03(\v2*.crabs.evening_detective_server.TeamResultR\x05teams\"\xc5\x01\n" + + "\x05teams\x18\x03 \x03(\v2*.crabs.evening_detective_server.TeamResultR\x05teams\"\xea\x01\n" + + "\n" + + "GameReview\x12\x0e\n" + + "\x02id\x18\x01 \x01(\x05R\x02id\x12\x17\n" + + "\agame_id\x18\x02 \x01(\x05R\x06gameId\x12\x17\n" + + "\ateam_id\x18\x03 \x01(\x05R\x06teamId\x12\x1b\n" + + "\tteam_name\x18\x04 \x01(\tR\bteamName\x12\x16\n" + + "\x06rating\x18\x05 \x01(\x05R\x06rating\x12\x12\n" + + "\x04text\x18\x06 \x01(\tR\x04text\x12\x16\n" + + "\x06status\x18\a \x01(\tR\x06status\x129\n" + + "\n" + + "created_at\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\"\x8d\x01\n" + + "\x13CreateGameReviewReq\x12\x16\n" + + "\x06gameId\x18\x01 \x01(\x05R\x06gameId\x12\x16\n" + + "\x06teamId\x18\x02 \x01(\x05R\x06teamId\x12\x1a\n" + + "\bpassword\x18\x03 \x01(\tR\bpassword\x12\x16\n" + + "\x06rating\x18\x04 \x01(\x05R\x06rating\x12\x12\n" + + "\x04text\x18\x05 \x01(\tR\x04text\"o\n" + + "\x13CreateGameReviewRsp\x12\x14\n" + + "\x05error\x18\x01 \x01(\tR\x05error\x12B\n" + + "\x06review\x18\x02 \x01(\v2*.crabs.evening_detective_server.GameReviewR\x06review\"+\n" + + "\x11GetGameReviewsReq\x12\x16\n" + + "\x06gameId\x18\x01 \x01(\x05R\x06gameId\"\xbb\x01\n" + + "\x11GetGameReviewsRsp\x12\x14\n" + + "\x05error\x18\x01 \x01(\tR\x05error\x12%\n" + + "\x0eaverage_rating\x18\x02 \x01(\x01R\raverageRating\x12#\n" + + "\rreviews_count\x18\x03 \x01(\x05R\freviewsCount\x12D\n" + + "\areviews\x18\x04 \x03(\v2*.crabs.evening_detective_server.GameReviewR\areviews\"?\n" + + "\x15ModerateGameReviewReq\x12\x0e\n" + + "\x02id\x18\x01 \x01(\x05R\x02id\x12\x16\n" + + "\x06status\x18\x02 \x01(\tR\x06status\"q\n" + + "\x15ModerateGameReviewRsp\x12\x14\n" + + "\x05error\x18\x01 \x01(\tR\x05error\x12B\n" + + "\x06review\x18\x02 \x01(\v2*.crabs.evening_detective_server.GameReviewR\x06review\"\xc5\x01\n" + "\rUpdateGameReq\x12\x0e\n" + "\x02id\x18\x01 \x01(\x05R\x02id\x12\x12\n" + "\x04name\x18\x02 \x01(\tR\x04name\x12 \n" + @@ -9272,7 +9749,7 @@ const file_main_proto_rawDesc = "" + "\x13SCREEN_COMMAND_STOP\x10\x04\x12\x19\n" + "\x15SCREEN_COMMAND_REPLAY\x10\x05\x12\x17\n" + "\x13SCREEN_COMMAND_SEEK\x10\x06\x12\x19\n" + - "\x15SCREEN_COMMAND_VOLUME\x10\a2\xf8\x93\x01\n" + + "\x15SCREEN_COMMAND_VOLUME\x10\a2\xaf\x9b\x01\n" + "\x16EveningDetectiveServer\x12\xcc\x05\n" + "\x10GetParticipation\x123.crabs.evening_detective_server.GetParticipationReq\x1a0.crabs.evening_detective_server.ParticipationRsp\"\xd0\x04\x92A\xab\x04\n" + ")Подтверждение участия\x122Получить состояние участия\x1a\xc7\x03Возвращает команду, игру и текущее решение по персональному токену из письма. Авторизация JWT не требуется. Чтение не меняет статус участия. Токен передаётся в теле запроса. Недействительная ссылка и ошибки обработки возвращаются в поле error при HTTP 200.b\x00\x82\xd3\xe4\x93\x02\x1b:\x01*\"\x16/api/participation/get\x12\xf2\b\n" + @@ -9414,7 +9891,19 @@ const file_main_proto_rawDesc = "" + "\x0eGetGameAnswers\x121.crabs.evening_detective_server.GetGameAnswersReq\x1a1.crabs.evening_detective_server.GetGameAnswersRsp\"\xab\x01\x92A\x84\x01\n" + "\bИгры\x12xПолучить ответы команд на вопросы дела (для оценки организатором)\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/games/{gameId}/answers\x12\x86\x02\n" + "\x0eGetGameResults\x121.crabs.evening_detective_server.GetGameResultsReq\x1a1.crabs.evening_detective_server.GetGameResultsRsp\"\x8d\x01\x92Ag\n" + - "\bИгры\x12[Получить итоговую таблицу игры (после завершения)\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/games/{gameId}/results\x12\xae\x01\n" + + "\bИгры\x12[Получить итоговую таблицу игры (после завершения)\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/games/{gameId}/results\x12\xe8\x01\n" + + "\x10CreateGameReview\x123.crabs.evening_detective_server.CreateGameReviewReq\x1a3.crabs.evening_detective_server.CreateGameReviewRsp\"j\x92AA\n" + + "\fОтзывы\x12)Оставить отзыв об игреb\x06\n" + + "\x04\n" + + "\x00\x12\x00\x82\xd3\xe4\x93\x02 :\x01*\"\x1b/api/games/{gameId}/reviews\x12\xe1\x01\n" + + "\x0eGetGameReviews\x121.crabs.evening_detective_server.GetGameReviewsReq\x1a1.crabs.evening_detective_server.GetGameReviewsRsp\"i\x92AC\n" + + "\fОтзывы\x12+Получить отзывы об игреb\x06\n" + + "\x04\n" + + "\x00\x12\x00\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/games/{gameId}/reviews\x12\x81\x02\n" + + "\x1bGetGameReviewsForModeration\x121.crabs.evening_detective_server.GetGameReviewsReq\x1a1.crabs.evening_detective_server.GetGameReviewsRsp\"|\x92AP\n" + + "\fОтзывы\x12@Получить отзывы игры для модерации\x82\xd3\xe4\x93\x02#\x12!/api/admin/games/{gameId}/reviews\x12\xe1\x01\n" + + "\x12ModerateGameReview\x125.crabs.evening_detective_server.ModerateGameReviewReq\x1a5.crabs.evening_detective_server.ModerateGameReviewRsp\"]\x92A3\n" + + "\fОтзывы\x12#Модерировать отзыв\x82\xd3\xe4\x93\x02!:\x01*\x1a\x1c/api/admin/game-reviews/{id}\x12\xae\x01\n" + "\n" + "UpdateGame\x12-.crabs.evening_detective_server.UpdateGameReq\x1a-.crabs.evening_detective_server.UpdateGameRsp\"B\x92A%\n" + "\bИгры\x12\x19Обновить игру\x82\xd3\xe4\x93\x02\x14:\x01*\x1a\x0f/api/games/{id}\x12\xad\x01\n" + @@ -9484,7 +9973,7 @@ func file_main_proto_rawDescGZIP() []byte { } var file_main_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_main_proto_msgTypes = make([]protoimpl.MessageInfo, 162) +var file_main_proto_msgTypes = make([]protoimpl.MessageInfo, 169) var file_main_proto_goTypes = []any{ (ScreenMode)(0), // 0: crabs.evening_detective_server.ScreenMode (ScreenCommand)(0), // 1: crabs.evening_detective_server.ScreenCommand @@ -9613,49 +10102,56 @@ var file_main_proto_goTypes = []any{ (*ResultsQuestion)(nil), // 124: crabs.evening_detective_server.ResultsQuestion (*TeamResult)(nil), // 125: crabs.evening_detective_server.TeamResult (*GetGameResultsRsp)(nil), // 126: crabs.evening_detective_server.GetGameResultsRsp - (*UpdateGameReq)(nil), // 127: crabs.evening_detective_server.UpdateGameReq - (*UpdateGameRsp)(nil), // 128: crabs.evening_detective_server.UpdateGameRsp - (*StartGameReq)(nil), // 129: crabs.evening_detective_server.StartGameReq - (*StartGameRsp)(nil), // 130: crabs.evening_detective_server.StartGameRsp - (*PauseGameReq)(nil), // 131: crabs.evening_detective_server.PauseGameReq - (*PauseGameRsp)(nil), // 132: crabs.evening_detective_server.PauseGameRsp - (*PlayGameReq)(nil), // 133: crabs.evening_detective_server.PlayGameReq - (*PlayGameRsp)(nil), // 134: crabs.evening_detective_server.PlayGameRsp - (*FinishGameReq)(nil), // 135: crabs.evening_detective_server.FinishGameReq - (*FinishGameRsp)(nil), // 136: crabs.evening_detective_server.FinishGameRsp - (*ResetGameReq)(nil), // 137: crabs.evening_detective_server.ResetGameReq - (*ResetGameRsp)(nil), // 138: crabs.evening_detective_server.ResetGameRsp - (*DeleteGameReq)(nil), // 139: crabs.evening_detective_server.DeleteGameReq - (*DeleteGameRsp)(nil), // 140: crabs.evening_detective_server.DeleteGameRsp - (*AddTeamReq)(nil), // 141: crabs.evening_detective_server.AddTeamReq - (*AddTeamRsp)(nil), // 142: crabs.evening_detective_server.AddTeamRsp - (*UpdateTeamReq)(nil), // 143: crabs.evening_detective_server.UpdateTeamReq - (*UpdateTeamRsp)(nil), // 144: crabs.evening_detective_server.UpdateTeamRsp - (*DeleteTeamReq)(nil), // 145: crabs.evening_detective_server.DeleteTeamReq - (*DeleteTeamRsp)(nil), // 146: crabs.evening_detective_server.DeleteTeamRsp - (*GiveTeamApplicationsReq)(nil), // 147: crabs.evening_detective_server.GiveTeamApplicationsReq - (*GiveTeamApplicationsRsp)(nil), // 148: crabs.evening_detective_server.GiveTeamApplicationsRsp - (*GetTeamStoryReq)(nil), // 149: crabs.evening_detective_server.GetTeamStoryReq - (*GetTeamStoryRsp)(nil), // 150: crabs.evening_detective_server.GetTeamStoryRsp - (*TeamAction)(nil), // 151: crabs.evening_detective_server.TeamAction - (*AddTeamActionReq)(nil), // 152: crabs.evening_detective_server.AddTeamActionReq - (*AddTeamActionRsp)(nil), // 153: crabs.evening_detective_server.AddTeamActionRsp - (*DeleteLastTeamActionReq)(nil), // 154: crabs.evening_detective_server.DeleteLastTeamActionReq - (*DeleteLastTeamActionRsp)(nil), // 155: crabs.evening_detective_server.DeleteLastTeamActionRsp - (*GetTeamAnswersReq)(nil), // 156: crabs.evening_detective_server.GetTeamAnswersReq - (*GetTeamAnswersRsp)(nil), // 157: crabs.evening_detective_server.GetTeamAnswersRsp - (*SubmitTeamAnswersReq)(nil), // 158: crabs.evening_detective_server.SubmitTeamAnswersReq - (*SubmitTeamAnswersRsp)(nil), // 159: crabs.evening_detective_server.SubmitTeamAnswersRsp - (*SetTeamAnswerScoreReq)(nil), // 160: crabs.evening_detective_server.SetTeamAnswerScoreReq - (*SetTeamAnswerScoreRsp)(nil), // 161: crabs.evening_detective_server.SetTeamAnswerScoreRsp - (*UpdateScenarioBackgroundReq)(nil), // 162: crabs.evening_detective_server.UpdateScenarioBackgroundReq - (*UpdateScenarioBackgroundRsp)(nil), // 163: crabs.evening_detective_server.UpdateScenarioBackgroundRsp - (*timestamppb.Timestamp)(nil), // 164: google.protobuf.Timestamp - (*httpbody.HttpBody)(nil), // 165: google.api.HttpBody + (*GameReview)(nil), // 127: crabs.evening_detective_server.GameReview + (*CreateGameReviewReq)(nil), // 128: crabs.evening_detective_server.CreateGameReviewReq + (*CreateGameReviewRsp)(nil), // 129: crabs.evening_detective_server.CreateGameReviewRsp + (*GetGameReviewsReq)(nil), // 130: crabs.evening_detective_server.GetGameReviewsReq + (*GetGameReviewsRsp)(nil), // 131: crabs.evening_detective_server.GetGameReviewsRsp + (*ModerateGameReviewReq)(nil), // 132: crabs.evening_detective_server.ModerateGameReviewReq + (*ModerateGameReviewRsp)(nil), // 133: crabs.evening_detective_server.ModerateGameReviewRsp + (*UpdateGameReq)(nil), // 134: crabs.evening_detective_server.UpdateGameReq + (*UpdateGameRsp)(nil), // 135: crabs.evening_detective_server.UpdateGameRsp + (*StartGameReq)(nil), // 136: crabs.evening_detective_server.StartGameReq + (*StartGameRsp)(nil), // 137: crabs.evening_detective_server.StartGameRsp + (*PauseGameReq)(nil), // 138: crabs.evening_detective_server.PauseGameReq + (*PauseGameRsp)(nil), // 139: crabs.evening_detective_server.PauseGameRsp + (*PlayGameReq)(nil), // 140: crabs.evening_detective_server.PlayGameReq + (*PlayGameRsp)(nil), // 141: crabs.evening_detective_server.PlayGameRsp + (*FinishGameReq)(nil), // 142: crabs.evening_detective_server.FinishGameReq + (*FinishGameRsp)(nil), // 143: crabs.evening_detective_server.FinishGameRsp + (*ResetGameReq)(nil), // 144: crabs.evening_detective_server.ResetGameReq + (*ResetGameRsp)(nil), // 145: crabs.evening_detective_server.ResetGameRsp + (*DeleteGameReq)(nil), // 146: crabs.evening_detective_server.DeleteGameReq + (*DeleteGameRsp)(nil), // 147: crabs.evening_detective_server.DeleteGameRsp + (*AddTeamReq)(nil), // 148: crabs.evening_detective_server.AddTeamReq + (*AddTeamRsp)(nil), // 149: crabs.evening_detective_server.AddTeamRsp + (*UpdateTeamReq)(nil), // 150: crabs.evening_detective_server.UpdateTeamReq + (*UpdateTeamRsp)(nil), // 151: crabs.evening_detective_server.UpdateTeamRsp + (*DeleteTeamReq)(nil), // 152: crabs.evening_detective_server.DeleteTeamReq + (*DeleteTeamRsp)(nil), // 153: crabs.evening_detective_server.DeleteTeamRsp + (*GiveTeamApplicationsReq)(nil), // 154: crabs.evening_detective_server.GiveTeamApplicationsReq + (*GiveTeamApplicationsRsp)(nil), // 155: crabs.evening_detective_server.GiveTeamApplicationsRsp + (*GetTeamStoryReq)(nil), // 156: crabs.evening_detective_server.GetTeamStoryReq + (*GetTeamStoryRsp)(nil), // 157: crabs.evening_detective_server.GetTeamStoryRsp + (*TeamAction)(nil), // 158: crabs.evening_detective_server.TeamAction + (*AddTeamActionReq)(nil), // 159: crabs.evening_detective_server.AddTeamActionReq + (*AddTeamActionRsp)(nil), // 160: crabs.evening_detective_server.AddTeamActionRsp + (*DeleteLastTeamActionReq)(nil), // 161: crabs.evening_detective_server.DeleteLastTeamActionReq + (*DeleteLastTeamActionRsp)(nil), // 162: crabs.evening_detective_server.DeleteLastTeamActionRsp + (*GetTeamAnswersReq)(nil), // 163: crabs.evening_detective_server.GetTeamAnswersReq + (*GetTeamAnswersRsp)(nil), // 164: crabs.evening_detective_server.GetTeamAnswersRsp + (*SubmitTeamAnswersReq)(nil), // 165: crabs.evening_detective_server.SubmitTeamAnswersReq + (*SubmitTeamAnswersRsp)(nil), // 166: crabs.evening_detective_server.SubmitTeamAnswersRsp + (*SetTeamAnswerScoreReq)(nil), // 167: crabs.evening_detective_server.SetTeamAnswerScoreReq + (*SetTeamAnswerScoreRsp)(nil), // 168: crabs.evening_detective_server.SetTeamAnswerScoreRsp + (*UpdateScenarioBackgroundReq)(nil), // 169: crabs.evening_detective_server.UpdateScenarioBackgroundReq + (*UpdateScenarioBackgroundRsp)(nil), // 170: crabs.evening_detective_server.UpdateScenarioBackgroundRsp + (*timestamppb.Timestamp)(nil), // 171: google.protobuf.Timestamp + (*httpbody.HttpBody)(nil), // 172: google.api.HttpBody } var file_main_proto_depIdxs = []int32{ 24, // 0: crabs.evening_detective_server.GetUsersRsp.users:type_name -> crabs.evening_detective_server.User - 164, // 1: crabs.evening_detective_server.User.created_at:type_name -> google.protobuf.Timestamp + 171, // 1: crabs.evening_detective_server.User.created_at:type_name -> google.protobuf.Timestamp 24, // 2: crabs.evening_detective_server.GetUserByIdRsp.user:type_name -> crabs.evening_detective_server.User 24, // 3: crabs.evening_detective_server.GetMeRsp.user:type_name -> crabs.evening_detective_server.User 48, // 4: crabs.evening_detective_server.GetMyScenariosRsp.scenarios:type_name -> crabs.evening_detective_server.Scenario @@ -9663,9 +10159,9 @@ var file_main_proto_depIdxs = []int32{ 48, // 6: crabs.evening_detective_server.GetScenarioRsp.scenario:type_name -> crabs.evening_detective_server.Scenario 49, // 7: crabs.evening_detective_server.Scenario.story:type_name -> crabs.evening_detective_server.Story 24, // 8: crabs.evening_detective_server.Scenario.author:type_name -> crabs.evening_detective_server.User - 164, // 9: crabs.evening_detective_server.Scenario.updated_at:type_name -> google.protobuf.Timestamp - 164, // 10: crabs.evening_detective_server.Scenario.created_at:type_name -> google.protobuf.Timestamp - 164, // 11: crabs.evening_detective_server.Scenario.published_at:type_name -> google.protobuf.Timestamp + 171, // 9: crabs.evening_detective_server.Scenario.updated_at:type_name -> google.protobuf.Timestamp + 171, // 10: crabs.evening_detective_server.Scenario.created_at:type_name -> google.protobuf.Timestamp + 171, // 11: crabs.evening_detective_server.Scenario.published_at:type_name -> google.protobuf.Timestamp 50, // 12: crabs.evening_detective_server.Story.conclusion:type_name -> crabs.evening_detective_server.Conclusion 51, // 13: crabs.evening_detective_server.Story.introduction:type_name -> crabs.evening_detective_server.Introduction 52, // 14: crabs.evening_detective_server.Story.places:type_name -> crabs.evening_detective_server.Place @@ -9682,13 +10178,13 @@ var file_main_proto_depIdxs = []int32{ 51, // 25: crabs.evening_detective_server.UpdateScenarioIntroReq.introduction:type_name -> crabs.evening_detective_server.Introduction 56, // 26: crabs.evening_detective_server.AddScenarioQuestionReq.question:type_name -> crabs.evening_detective_server.Question 56, // 27: crabs.evening_detective_server.UpdateScenarioQuestionReq.question:type_name -> crabs.evening_detective_server.Question - 164, // 28: crabs.evening_detective_server.AddGameReq.start_at:type_name -> google.protobuf.Timestamp + 171, // 28: crabs.evening_detective_server.AddGameReq.start_at:type_name -> google.protobuf.Timestamp 90, // 29: crabs.evening_detective_server.GetGamesRsp.games:type_name -> crabs.evening_detective_server.Game - 164, // 30: crabs.evening_detective_server.Game.start_at:type_name -> google.protobuf.Timestamp + 171, // 30: crabs.evening_detective_server.Game.start_at:type_name -> google.protobuf.Timestamp 48, // 31: crabs.evening_detective_server.Game.scenario:type_name -> crabs.evening_detective_server.Scenario 118, // 32: crabs.evening_detective_server.Game.teams:type_name -> crabs.evening_detective_server.Team - 164, // 33: crabs.evening_detective_server.Game.started_at:type_name -> google.protobuf.Timestamp - 164, // 34: crabs.evening_detective_server.Game.ended_at:type_name -> google.protobuf.Timestamp + 171, // 33: crabs.evening_detective_server.Game.started_at:type_name -> google.protobuf.Timestamp + 171, // 34: crabs.evening_detective_server.Game.ended_at:type_name -> google.protobuf.Timestamp 0, // 35: crabs.evening_detective_server.ScreenState.mode:type_name -> crabs.evening_detective_server.ScreenMode 1, // 36: crabs.evening_detective_server.ScreenState.command:type_name -> crabs.evening_detective_server.ScreenCommand 91, // 37: crabs.evening_detective_server.GetScreenStateRsp.state:type_name -> crabs.evening_detective_server.ScreenState @@ -9699,7 +10195,7 @@ var file_main_proto_depIdxs = []int32{ 1, // 42: crabs.evening_detective_server.SendScreenCommandReq.command:type_name -> crabs.evening_detective_server.ScreenCommand 124, // 43: crabs.evening_detective_server.GetScreenResultsRsp.questions:type_name -> crabs.evening_detective_server.ResultsQuestion 125, // 44: crabs.evening_detective_server.GetScreenResultsRsp.teams:type_name -> crabs.evening_detective_server.TeamResult - 164, // 45: crabs.evening_detective_server.ParticipationRsp.start_at:type_name -> google.protobuf.Timestamp + 171, // 45: crabs.evening_detective_server.ParticipationRsp.start_at:type_name -> google.protobuf.Timestamp 53, // 46: crabs.evening_detective_server.Team.applications:type_name -> crabs.evening_detective_server.Application 90, // 47: crabs.evening_detective_server.GetGameRsp.game:type_name -> crabs.evening_detective_server.Game 56, // 48: crabs.evening_detective_server.GetGameAnswersRsp.questions:type_name -> crabs.evening_detective_server.Question @@ -9708,167 +10204,179 @@ var file_main_proto_depIdxs = []int32{ 58, // 51: crabs.evening_detective_server.TeamResult.answers:type_name -> crabs.evening_detective_server.AnswerScore 124, // 52: crabs.evening_detective_server.GetGameResultsRsp.questions:type_name -> crabs.evening_detective_server.ResultsQuestion 125, // 53: crabs.evening_detective_server.GetGameResultsRsp.teams:type_name -> crabs.evening_detective_server.TeamResult - 164, // 54: crabs.evening_detective_server.UpdateGameReq.start_at:type_name -> google.protobuf.Timestamp - 49, // 55: crabs.evening_detective_server.GetTeamStoryRsp.story:type_name -> crabs.evening_detective_server.Story - 90, // 56: crabs.evening_detective_server.GetTeamStoryRsp.game:type_name -> crabs.evening_detective_server.Game - 151, // 57: crabs.evening_detective_server.GetTeamStoryRsp.actions:type_name -> crabs.evening_detective_server.TeamAction - 57, // 58: crabs.evening_detective_server.GetTeamAnswersRsp.answers:type_name -> crabs.evening_detective_server.Answer - 57, // 59: crabs.evening_detective_server.SubmitTeamAnswersReq.answers:type_name -> crabs.evening_detective_server.Answer - 115, // 60: crabs.evening_detective_server.EveningDetectiveServer.GetParticipation:input_type -> crabs.evening_detective_server.GetParticipationReq - 116, // 61: crabs.evening_detective_server.EveningDetectiveServer.AnswerParticipation:input_type -> crabs.evening_detective_server.AnswerParticipationReq - 2, // 62: crabs.evening_detective_server.EveningDetectiveServer.Ping:input_type -> crabs.evening_detective_server.PingReq - 4, // 63: crabs.evening_detective_server.EveningDetectiveServer.Echo:input_type -> crabs.evening_detective_server.EchoReq - 6, // 64: crabs.evening_detective_server.EveningDetectiveServer.Signup:input_type -> crabs.evening_detective_server.SignupReq - 8, // 65: crabs.evening_detective_server.EveningDetectiveServer.RefreshPassword:input_type -> crabs.evening_detective_server.RefreshPasswordReq - 10, // 66: crabs.evening_detective_server.EveningDetectiveServer.Login:input_type -> crabs.evening_detective_server.LoginReq - 12, // 67: crabs.evening_detective_server.EveningDetectiveServer.Refresh:input_type -> crabs.evening_detective_server.RefreshReq - 14, // 68: crabs.evening_detective_server.EveningDetectiveServer.DeleteAccount:input_type -> crabs.evening_detective_server.DeleteAccountReq - 16, // 69: crabs.evening_detective_server.EveningDetectiveServer.GetTerms:input_type -> crabs.evening_detective_server.GetTermsReq - 18, // 70: crabs.evening_detective_server.EveningDetectiveServer.GetPrivacy:input_type -> crabs.evening_detective_server.GetPrivacyReq - 20, // 71: crabs.evening_detective_server.EveningDetectiveServer.GetConsent:input_type -> crabs.evening_detective_server.GetConsentReq - 22, // 72: crabs.evening_detective_server.EveningDetectiveServer.GetUsers:input_type -> crabs.evening_detective_server.GetUsersReq - 25, // 73: crabs.evening_detective_server.EveningDetectiveServer.GetUserById:input_type -> crabs.evening_detective_server.GetUserByIdReq - 27, // 74: crabs.evening_detective_server.EveningDetectiveServer.GetMe:input_type -> crabs.evening_detective_server.GetMeReq - 29, // 75: crabs.evening_detective_server.EveningDetectiveServer.ChangeUserPassword:input_type -> crabs.evening_detective_server.ChangeUserPasswordReq - 31, // 76: crabs.evening_detective_server.EveningDetectiveServer.AddUserRole:input_type -> crabs.evening_detective_server.AddUserRoleReq - 33, // 77: crabs.evening_detective_server.EveningDetectiveServer.DeleteUserRole:input_type -> crabs.evening_detective_server.DeleteUserRoleReq - 35, // 78: crabs.evening_detective_server.EveningDetectiveServer.GetPermissions:input_type -> crabs.evening_detective_server.GetPermissionsReq - 37, // 79: crabs.evening_detective_server.EveningDetectiveServer.UploadFile:input_type -> crabs.evening_detective_server.UploadFileReq - 39, // 80: crabs.evening_detective_server.EveningDetectiveServer.DownloadFile:input_type -> crabs.evening_detective_server.DownloadFileReq - 40, // 81: crabs.evening_detective_server.EveningDetectiveServer.AddScenario:input_type -> crabs.evening_detective_server.AddScenarioReq - 42, // 82: crabs.evening_detective_server.EveningDetectiveServer.GetMyScenarios:input_type -> crabs.evening_detective_server.GetMyScenariosReq - 44, // 83: crabs.evening_detective_server.EveningDetectiveServer.GetScenariosCatalog:input_type -> crabs.evening_detective_server.GetScenariosCatalogReq - 46, // 84: crabs.evening_detective_server.EveningDetectiveServer.GetFullScenario:input_type -> crabs.evening_detective_server.GetScenarioReq - 46, // 85: crabs.evening_detective_server.EveningDetectiveServer.GetScenario:input_type -> crabs.evening_detective_server.GetScenarioReq - 60, // 86: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenario:input_type -> crabs.evening_detective_server.UpdateScenarioReq - 62, // 87: crabs.evening_detective_server.EveningDetectiveServer.PublicScenario:input_type -> crabs.evening_detective_server.PublicScenarioReq - 64, // 88: crabs.evening_detective_server.EveningDetectiveServer.DraftScenario:input_type -> crabs.evening_detective_server.DraftScenarioReq - 66, // 89: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenario:input_type -> crabs.evening_detective_server.DeleteScenarioReq - 68, // 90: crabs.evening_detective_server.EveningDetectiveServer.AddScenarioPlace:input_type -> crabs.evening_detective_server.AddScenarioPlaceReq - 70, // 91: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioPlace:input_type -> crabs.evening_detective_server.UpdateScenarioPlaceReq - 72, // 92: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenarioPlace:input_type -> crabs.evening_detective_server.DeleteScenarioPlaceReq - 78, // 93: crabs.evening_detective_server.EveningDetectiveServer.AddScenarioQuestion:input_type -> crabs.evening_detective_server.AddScenarioQuestionReq - 80, // 94: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioQuestion:input_type -> crabs.evening_detective_server.UpdateScenarioQuestionReq - 82, // 95: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenarioQuestion:input_type -> crabs.evening_detective_server.DeleteScenarioQuestionReq - 162, // 96: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioBackground:input_type -> crabs.evening_detective_server.UpdateScenarioBackgroundReq - 76, // 97: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioIntro:input_type -> crabs.evening_detective_server.UpdateScenarioIntroReq - 74, // 98: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioConclusion:input_type -> crabs.evening_detective_server.UpdateScenarioConclusionReq - 84, // 99: crabs.evening_detective_server.EveningDetectiveServer.DownloadScenarioArchive:input_type -> crabs.evening_detective_server.DownloadScenarioArchiveReq - 165, // 100: crabs.evening_detective_server.EveningDetectiveServer.UploadScenarioArchive:input_type -> google.api.HttpBody - 86, // 101: crabs.evening_detective_server.EveningDetectiveServer.AddGame:input_type -> crabs.evening_detective_server.AddGameReq - 88, // 102: crabs.evening_detective_server.EveningDetectiveServer.GetGames:input_type -> crabs.evening_detective_server.GetGamesReq - 119, // 103: crabs.evening_detective_server.EveningDetectiveServer.GetGame:input_type -> crabs.evening_detective_server.GetGameReq - 92, // 104: crabs.evening_detective_server.EveningDetectiveServer.CreateScreenSession:input_type -> crabs.evening_detective_server.CreateScreenSessionReq - 94, // 105: crabs.evening_detective_server.EveningDetectiveServer.GetScreenState:input_type -> crabs.evening_detective_server.GetScreenStateReq - 96, // 106: crabs.evening_detective_server.EveningDetectiveServer.GetGameScreens:input_type -> crabs.evening_detective_server.GetGameScreensReq - 98, // 107: crabs.evening_detective_server.EveningDetectiveServer.BindScreen:input_type -> crabs.evening_detective_server.BindScreenReq - 100, // 108: crabs.evening_detective_server.EveningDetectiveServer.UnbindScreen:input_type -> crabs.evening_detective_server.UnbindScreenReq - 102, // 109: crabs.evening_detective_server.EveningDetectiveServer.SetScreenSound:input_type -> crabs.evening_detective_server.SetScreenSoundReq - 105, // 110: crabs.evening_detective_server.EveningDetectiveServer.GetGameMap:input_type -> crabs.evening_detective_server.GetGameMapReq - 107, // 111: crabs.evening_detective_server.EveningDetectiveServer.UpdateGameMapItem:input_type -> crabs.evening_detective_server.UpdateGameMapItemReq - 109, // 112: crabs.evening_detective_server.EveningDetectiveServer.SetScreenMode:input_type -> crabs.evening_detective_server.SetScreenModeReq - 111, // 113: crabs.evening_detective_server.EveningDetectiveServer.SendScreenCommand:input_type -> crabs.evening_detective_server.SendScreenCommandReq - 113, // 114: crabs.evening_detective_server.EveningDetectiveServer.GetScreenResults:input_type -> crabs.evening_detective_server.GetScreenResultsReq - 119, // 115: crabs.evening_detective_server.EveningDetectiveServer.DownloadTeamQR:input_type -> crabs.evening_detective_server.GetGameReq - 121, // 116: crabs.evening_detective_server.EveningDetectiveServer.GetGameAnswers:input_type -> crabs.evening_detective_server.GetGameAnswersReq - 123, // 117: crabs.evening_detective_server.EveningDetectiveServer.GetGameResults:input_type -> crabs.evening_detective_server.GetGameResultsReq - 127, // 118: crabs.evening_detective_server.EveningDetectiveServer.UpdateGame:input_type -> crabs.evening_detective_server.UpdateGameReq - 129, // 119: crabs.evening_detective_server.EveningDetectiveServer.StartGame:input_type -> crabs.evening_detective_server.StartGameReq - 131, // 120: crabs.evening_detective_server.EveningDetectiveServer.PauseGame:input_type -> crabs.evening_detective_server.PauseGameReq - 133, // 121: crabs.evening_detective_server.EveningDetectiveServer.PlayGame:input_type -> crabs.evening_detective_server.PlayGameReq - 135, // 122: crabs.evening_detective_server.EveningDetectiveServer.FinishGame:input_type -> crabs.evening_detective_server.FinishGameReq - 137, // 123: crabs.evening_detective_server.EveningDetectiveServer.ResetGame:input_type -> crabs.evening_detective_server.ResetGameReq - 139, // 124: crabs.evening_detective_server.EveningDetectiveServer.DeleteGame:input_type -> crabs.evening_detective_server.DeleteGameReq - 141, // 125: crabs.evening_detective_server.EveningDetectiveServer.AddTeam:input_type -> crabs.evening_detective_server.AddTeamReq - 143, // 126: crabs.evening_detective_server.EveningDetectiveServer.UpdateTeam:input_type -> crabs.evening_detective_server.UpdateTeamReq - 145, // 127: crabs.evening_detective_server.EveningDetectiveServer.DeleteTeam:input_type -> crabs.evening_detective_server.DeleteTeamReq - 147, // 128: crabs.evening_detective_server.EveningDetectiveServer.GiveTeamApplications:input_type -> crabs.evening_detective_server.GiveTeamApplicationsReq - 149, // 129: crabs.evening_detective_server.EveningDetectiveServer.GetTeamStory:input_type -> crabs.evening_detective_server.GetTeamStoryReq - 152, // 130: crabs.evening_detective_server.EveningDetectiveServer.AddTeamAction:input_type -> crabs.evening_detective_server.AddTeamActionReq - 154, // 131: crabs.evening_detective_server.EveningDetectiveServer.DeleteLastTeamAction:input_type -> crabs.evening_detective_server.DeleteLastTeamActionReq - 156, // 132: crabs.evening_detective_server.EveningDetectiveServer.GetTeamAnswers:input_type -> crabs.evening_detective_server.GetTeamAnswersReq - 158, // 133: crabs.evening_detective_server.EveningDetectiveServer.SubmitTeamAnswers:input_type -> crabs.evening_detective_server.SubmitTeamAnswersReq - 160, // 134: crabs.evening_detective_server.EveningDetectiveServer.SetTeamAnswerScore:input_type -> crabs.evening_detective_server.SetTeamAnswerScoreReq - 117, // 135: crabs.evening_detective_server.EveningDetectiveServer.GetParticipation:output_type -> crabs.evening_detective_server.ParticipationRsp - 117, // 136: crabs.evening_detective_server.EveningDetectiveServer.AnswerParticipation:output_type -> crabs.evening_detective_server.ParticipationRsp - 3, // 137: crabs.evening_detective_server.EveningDetectiveServer.Ping:output_type -> crabs.evening_detective_server.PingRsp - 5, // 138: crabs.evening_detective_server.EveningDetectiveServer.Echo:output_type -> crabs.evening_detective_server.EchoRsp - 7, // 139: crabs.evening_detective_server.EveningDetectiveServer.Signup:output_type -> crabs.evening_detective_server.SignupRsp - 9, // 140: crabs.evening_detective_server.EveningDetectiveServer.RefreshPassword:output_type -> crabs.evening_detective_server.RefreshPasswordRsp - 11, // 141: crabs.evening_detective_server.EveningDetectiveServer.Login:output_type -> crabs.evening_detective_server.LoginRsp - 13, // 142: crabs.evening_detective_server.EveningDetectiveServer.Refresh:output_type -> crabs.evening_detective_server.RefreshRsp - 15, // 143: crabs.evening_detective_server.EveningDetectiveServer.DeleteAccount:output_type -> crabs.evening_detective_server.DeleteAccountRsp - 17, // 144: crabs.evening_detective_server.EveningDetectiveServer.GetTerms:output_type -> crabs.evening_detective_server.GetTermsRsp - 19, // 145: crabs.evening_detective_server.EveningDetectiveServer.GetPrivacy:output_type -> crabs.evening_detective_server.GetPrivacyRsp - 21, // 146: crabs.evening_detective_server.EveningDetectiveServer.GetConsent:output_type -> crabs.evening_detective_server.GetConsentRsp - 23, // 147: crabs.evening_detective_server.EveningDetectiveServer.GetUsers:output_type -> crabs.evening_detective_server.GetUsersRsp - 26, // 148: crabs.evening_detective_server.EveningDetectiveServer.GetUserById:output_type -> crabs.evening_detective_server.GetUserByIdRsp - 28, // 149: crabs.evening_detective_server.EveningDetectiveServer.GetMe:output_type -> crabs.evening_detective_server.GetMeRsp - 30, // 150: crabs.evening_detective_server.EveningDetectiveServer.ChangeUserPassword:output_type -> crabs.evening_detective_server.ChangeUserPasswordRsp - 32, // 151: crabs.evening_detective_server.EveningDetectiveServer.AddUserRole:output_type -> crabs.evening_detective_server.AddUserRoleRsp - 34, // 152: crabs.evening_detective_server.EveningDetectiveServer.DeleteUserRole:output_type -> crabs.evening_detective_server.DeleteUserRoleRsp - 36, // 153: crabs.evening_detective_server.EveningDetectiveServer.GetPermissions:output_type -> crabs.evening_detective_server.GetPermissionsRsp - 38, // 154: crabs.evening_detective_server.EveningDetectiveServer.UploadFile:output_type -> crabs.evening_detective_server.UploadFileRsp - 165, // 155: crabs.evening_detective_server.EveningDetectiveServer.DownloadFile:output_type -> google.api.HttpBody - 41, // 156: crabs.evening_detective_server.EveningDetectiveServer.AddScenario:output_type -> crabs.evening_detective_server.AddScenarioRsp - 43, // 157: crabs.evening_detective_server.EveningDetectiveServer.GetMyScenarios:output_type -> crabs.evening_detective_server.GetMyScenariosRsp - 45, // 158: crabs.evening_detective_server.EveningDetectiveServer.GetScenariosCatalog:output_type -> crabs.evening_detective_server.GetScenariosCatalogRsp - 47, // 159: crabs.evening_detective_server.EveningDetectiveServer.GetFullScenario:output_type -> crabs.evening_detective_server.GetScenarioRsp - 47, // 160: crabs.evening_detective_server.EveningDetectiveServer.GetScenario:output_type -> crabs.evening_detective_server.GetScenarioRsp - 61, // 161: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenario:output_type -> crabs.evening_detective_server.UpdateScenarioRsp - 63, // 162: crabs.evening_detective_server.EveningDetectiveServer.PublicScenario:output_type -> crabs.evening_detective_server.PublicScenarioRsp - 65, // 163: crabs.evening_detective_server.EveningDetectiveServer.DraftScenario:output_type -> crabs.evening_detective_server.DraftScenarioRsp - 67, // 164: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenario:output_type -> crabs.evening_detective_server.DeleteScenarioRsp - 69, // 165: crabs.evening_detective_server.EveningDetectiveServer.AddScenarioPlace:output_type -> crabs.evening_detective_server.AddScenarioPlaceRsp - 71, // 166: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioPlace:output_type -> crabs.evening_detective_server.UpdateScenarioPlaceRsp - 73, // 167: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenarioPlace:output_type -> crabs.evening_detective_server.DeleteScenarioPlaceRsp - 79, // 168: crabs.evening_detective_server.EveningDetectiveServer.AddScenarioQuestion:output_type -> crabs.evening_detective_server.AddScenarioQuestionRsp - 81, // 169: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioQuestion:output_type -> crabs.evening_detective_server.UpdateScenarioQuestionRsp - 83, // 170: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenarioQuestion:output_type -> crabs.evening_detective_server.DeleteScenarioQuestionRsp - 163, // 171: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioBackground:output_type -> crabs.evening_detective_server.UpdateScenarioBackgroundRsp - 77, // 172: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioIntro:output_type -> crabs.evening_detective_server.UpdateScenarioIntroRsp - 75, // 173: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioConclusion:output_type -> crabs.evening_detective_server.UpdateScenarioConclusionRsp - 165, // 174: crabs.evening_detective_server.EveningDetectiveServer.DownloadScenarioArchive:output_type -> google.api.HttpBody - 85, // 175: crabs.evening_detective_server.EveningDetectiveServer.UploadScenarioArchive:output_type -> crabs.evening_detective_server.UploadScenarioArchiveRsp - 87, // 176: crabs.evening_detective_server.EveningDetectiveServer.AddGame:output_type -> crabs.evening_detective_server.AddGameRsp - 89, // 177: crabs.evening_detective_server.EveningDetectiveServer.GetGames:output_type -> crabs.evening_detective_server.GetGamesRsp - 120, // 178: crabs.evening_detective_server.EveningDetectiveServer.GetGame:output_type -> crabs.evening_detective_server.GetGameRsp - 93, // 179: crabs.evening_detective_server.EveningDetectiveServer.CreateScreenSession:output_type -> crabs.evening_detective_server.CreateScreenSessionRsp - 95, // 180: crabs.evening_detective_server.EveningDetectiveServer.GetScreenState:output_type -> crabs.evening_detective_server.GetScreenStateRsp - 97, // 181: crabs.evening_detective_server.EveningDetectiveServer.GetGameScreens:output_type -> crabs.evening_detective_server.GetGameScreensRsp - 99, // 182: crabs.evening_detective_server.EveningDetectiveServer.BindScreen:output_type -> crabs.evening_detective_server.BindScreenRsp - 101, // 183: crabs.evening_detective_server.EveningDetectiveServer.UnbindScreen:output_type -> crabs.evening_detective_server.UnbindScreenRsp - 103, // 184: crabs.evening_detective_server.EveningDetectiveServer.SetScreenSound:output_type -> crabs.evening_detective_server.SetScreenSoundRsp - 106, // 185: crabs.evening_detective_server.EveningDetectiveServer.GetGameMap:output_type -> crabs.evening_detective_server.GetGameMapRsp - 108, // 186: crabs.evening_detective_server.EveningDetectiveServer.UpdateGameMapItem:output_type -> crabs.evening_detective_server.UpdateGameMapItemRsp - 110, // 187: crabs.evening_detective_server.EveningDetectiveServer.SetScreenMode:output_type -> crabs.evening_detective_server.SetScreenModeRsp - 112, // 188: crabs.evening_detective_server.EveningDetectiveServer.SendScreenCommand:output_type -> crabs.evening_detective_server.SendScreenCommandRsp - 114, // 189: crabs.evening_detective_server.EveningDetectiveServer.GetScreenResults:output_type -> crabs.evening_detective_server.GetScreenResultsRsp - 165, // 190: crabs.evening_detective_server.EveningDetectiveServer.DownloadTeamQR:output_type -> google.api.HttpBody - 122, // 191: crabs.evening_detective_server.EveningDetectiveServer.GetGameAnswers:output_type -> crabs.evening_detective_server.GetGameAnswersRsp - 126, // 192: crabs.evening_detective_server.EveningDetectiveServer.GetGameResults:output_type -> crabs.evening_detective_server.GetGameResultsRsp - 128, // 193: crabs.evening_detective_server.EveningDetectiveServer.UpdateGame:output_type -> crabs.evening_detective_server.UpdateGameRsp - 130, // 194: crabs.evening_detective_server.EveningDetectiveServer.StartGame:output_type -> crabs.evening_detective_server.StartGameRsp - 132, // 195: crabs.evening_detective_server.EveningDetectiveServer.PauseGame:output_type -> crabs.evening_detective_server.PauseGameRsp - 134, // 196: crabs.evening_detective_server.EveningDetectiveServer.PlayGame:output_type -> crabs.evening_detective_server.PlayGameRsp - 136, // 197: crabs.evening_detective_server.EveningDetectiveServer.FinishGame:output_type -> crabs.evening_detective_server.FinishGameRsp - 138, // 198: crabs.evening_detective_server.EveningDetectiveServer.ResetGame:output_type -> crabs.evening_detective_server.ResetGameRsp - 140, // 199: crabs.evening_detective_server.EveningDetectiveServer.DeleteGame:output_type -> crabs.evening_detective_server.DeleteGameRsp - 142, // 200: crabs.evening_detective_server.EveningDetectiveServer.AddTeam:output_type -> crabs.evening_detective_server.AddTeamRsp - 144, // 201: crabs.evening_detective_server.EveningDetectiveServer.UpdateTeam:output_type -> crabs.evening_detective_server.UpdateTeamRsp - 146, // 202: crabs.evening_detective_server.EveningDetectiveServer.DeleteTeam:output_type -> crabs.evening_detective_server.DeleteTeamRsp - 148, // 203: crabs.evening_detective_server.EveningDetectiveServer.GiveTeamApplications:output_type -> crabs.evening_detective_server.GiveTeamApplicationsRsp - 150, // 204: crabs.evening_detective_server.EveningDetectiveServer.GetTeamStory:output_type -> crabs.evening_detective_server.GetTeamStoryRsp - 153, // 205: crabs.evening_detective_server.EveningDetectiveServer.AddTeamAction:output_type -> crabs.evening_detective_server.AddTeamActionRsp - 155, // 206: crabs.evening_detective_server.EveningDetectiveServer.DeleteLastTeamAction:output_type -> crabs.evening_detective_server.DeleteLastTeamActionRsp - 157, // 207: crabs.evening_detective_server.EveningDetectiveServer.GetTeamAnswers:output_type -> crabs.evening_detective_server.GetTeamAnswersRsp - 159, // 208: crabs.evening_detective_server.EveningDetectiveServer.SubmitTeamAnswers:output_type -> crabs.evening_detective_server.SubmitTeamAnswersRsp - 161, // 209: crabs.evening_detective_server.EveningDetectiveServer.SetTeamAnswerScore:output_type -> crabs.evening_detective_server.SetTeamAnswerScoreRsp - 135, // [135:210] is the sub-list for method output_type - 60, // [60:135] is the sub-list for method input_type - 60, // [60:60] is the sub-list for extension type_name - 60, // [60:60] is the sub-list for extension extendee - 0, // [0:60] is the sub-list for field type_name + 171, // 54: crabs.evening_detective_server.GameReview.created_at:type_name -> google.protobuf.Timestamp + 127, // 55: crabs.evening_detective_server.CreateGameReviewRsp.review:type_name -> crabs.evening_detective_server.GameReview + 127, // 56: crabs.evening_detective_server.GetGameReviewsRsp.reviews:type_name -> crabs.evening_detective_server.GameReview + 127, // 57: crabs.evening_detective_server.ModerateGameReviewRsp.review:type_name -> crabs.evening_detective_server.GameReview + 171, // 58: crabs.evening_detective_server.UpdateGameReq.start_at:type_name -> google.protobuf.Timestamp + 49, // 59: crabs.evening_detective_server.GetTeamStoryRsp.story:type_name -> crabs.evening_detective_server.Story + 90, // 60: crabs.evening_detective_server.GetTeamStoryRsp.game:type_name -> crabs.evening_detective_server.Game + 158, // 61: crabs.evening_detective_server.GetTeamStoryRsp.actions:type_name -> crabs.evening_detective_server.TeamAction + 57, // 62: crabs.evening_detective_server.GetTeamAnswersRsp.answers:type_name -> crabs.evening_detective_server.Answer + 57, // 63: crabs.evening_detective_server.SubmitTeamAnswersReq.answers:type_name -> crabs.evening_detective_server.Answer + 115, // 64: crabs.evening_detective_server.EveningDetectiveServer.GetParticipation:input_type -> crabs.evening_detective_server.GetParticipationReq + 116, // 65: crabs.evening_detective_server.EveningDetectiveServer.AnswerParticipation:input_type -> crabs.evening_detective_server.AnswerParticipationReq + 2, // 66: crabs.evening_detective_server.EveningDetectiveServer.Ping:input_type -> crabs.evening_detective_server.PingReq + 4, // 67: crabs.evening_detective_server.EveningDetectiveServer.Echo:input_type -> crabs.evening_detective_server.EchoReq + 6, // 68: crabs.evening_detective_server.EveningDetectiveServer.Signup:input_type -> crabs.evening_detective_server.SignupReq + 8, // 69: crabs.evening_detective_server.EveningDetectiveServer.RefreshPassword:input_type -> crabs.evening_detective_server.RefreshPasswordReq + 10, // 70: crabs.evening_detective_server.EveningDetectiveServer.Login:input_type -> crabs.evening_detective_server.LoginReq + 12, // 71: crabs.evening_detective_server.EveningDetectiveServer.Refresh:input_type -> crabs.evening_detective_server.RefreshReq + 14, // 72: crabs.evening_detective_server.EveningDetectiveServer.DeleteAccount:input_type -> crabs.evening_detective_server.DeleteAccountReq + 16, // 73: crabs.evening_detective_server.EveningDetectiveServer.GetTerms:input_type -> crabs.evening_detective_server.GetTermsReq + 18, // 74: crabs.evening_detective_server.EveningDetectiveServer.GetPrivacy:input_type -> crabs.evening_detective_server.GetPrivacyReq + 20, // 75: crabs.evening_detective_server.EveningDetectiveServer.GetConsent:input_type -> crabs.evening_detective_server.GetConsentReq + 22, // 76: crabs.evening_detective_server.EveningDetectiveServer.GetUsers:input_type -> crabs.evening_detective_server.GetUsersReq + 25, // 77: crabs.evening_detective_server.EveningDetectiveServer.GetUserById:input_type -> crabs.evening_detective_server.GetUserByIdReq + 27, // 78: crabs.evening_detective_server.EveningDetectiveServer.GetMe:input_type -> crabs.evening_detective_server.GetMeReq + 29, // 79: crabs.evening_detective_server.EveningDetectiveServer.ChangeUserPassword:input_type -> crabs.evening_detective_server.ChangeUserPasswordReq + 31, // 80: crabs.evening_detective_server.EveningDetectiveServer.AddUserRole:input_type -> crabs.evening_detective_server.AddUserRoleReq + 33, // 81: crabs.evening_detective_server.EveningDetectiveServer.DeleteUserRole:input_type -> crabs.evening_detective_server.DeleteUserRoleReq + 35, // 82: crabs.evening_detective_server.EveningDetectiveServer.GetPermissions:input_type -> crabs.evening_detective_server.GetPermissionsReq + 37, // 83: crabs.evening_detective_server.EveningDetectiveServer.UploadFile:input_type -> crabs.evening_detective_server.UploadFileReq + 39, // 84: crabs.evening_detective_server.EveningDetectiveServer.DownloadFile:input_type -> crabs.evening_detective_server.DownloadFileReq + 40, // 85: crabs.evening_detective_server.EveningDetectiveServer.AddScenario:input_type -> crabs.evening_detective_server.AddScenarioReq + 42, // 86: crabs.evening_detective_server.EveningDetectiveServer.GetMyScenarios:input_type -> crabs.evening_detective_server.GetMyScenariosReq + 44, // 87: crabs.evening_detective_server.EveningDetectiveServer.GetScenariosCatalog:input_type -> crabs.evening_detective_server.GetScenariosCatalogReq + 46, // 88: crabs.evening_detective_server.EveningDetectiveServer.GetFullScenario:input_type -> crabs.evening_detective_server.GetScenarioReq + 46, // 89: crabs.evening_detective_server.EveningDetectiveServer.GetScenario:input_type -> crabs.evening_detective_server.GetScenarioReq + 60, // 90: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenario:input_type -> crabs.evening_detective_server.UpdateScenarioReq + 62, // 91: crabs.evening_detective_server.EveningDetectiveServer.PublicScenario:input_type -> crabs.evening_detective_server.PublicScenarioReq + 64, // 92: crabs.evening_detective_server.EveningDetectiveServer.DraftScenario:input_type -> crabs.evening_detective_server.DraftScenarioReq + 66, // 93: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenario:input_type -> crabs.evening_detective_server.DeleteScenarioReq + 68, // 94: crabs.evening_detective_server.EveningDetectiveServer.AddScenarioPlace:input_type -> crabs.evening_detective_server.AddScenarioPlaceReq + 70, // 95: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioPlace:input_type -> crabs.evening_detective_server.UpdateScenarioPlaceReq + 72, // 96: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenarioPlace:input_type -> crabs.evening_detective_server.DeleteScenarioPlaceReq + 78, // 97: crabs.evening_detective_server.EveningDetectiveServer.AddScenarioQuestion:input_type -> crabs.evening_detective_server.AddScenarioQuestionReq + 80, // 98: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioQuestion:input_type -> crabs.evening_detective_server.UpdateScenarioQuestionReq + 82, // 99: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenarioQuestion:input_type -> crabs.evening_detective_server.DeleteScenarioQuestionReq + 169, // 100: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioBackground:input_type -> crabs.evening_detective_server.UpdateScenarioBackgroundReq + 76, // 101: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioIntro:input_type -> crabs.evening_detective_server.UpdateScenarioIntroReq + 74, // 102: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioConclusion:input_type -> crabs.evening_detective_server.UpdateScenarioConclusionReq + 84, // 103: crabs.evening_detective_server.EveningDetectiveServer.DownloadScenarioArchive:input_type -> crabs.evening_detective_server.DownloadScenarioArchiveReq + 172, // 104: crabs.evening_detective_server.EveningDetectiveServer.UploadScenarioArchive:input_type -> google.api.HttpBody + 86, // 105: crabs.evening_detective_server.EveningDetectiveServer.AddGame:input_type -> crabs.evening_detective_server.AddGameReq + 88, // 106: crabs.evening_detective_server.EveningDetectiveServer.GetGames:input_type -> crabs.evening_detective_server.GetGamesReq + 119, // 107: crabs.evening_detective_server.EveningDetectiveServer.GetGame:input_type -> crabs.evening_detective_server.GetGameReq + 92, // 108: crabs.evening_detective_server.EveningDetectiveServer.CreateScreenSession:input_type -> crabs.evening_detective_server.CreateScreenSessionReq + 94, // 109: crabs.evening_detective_server.EveningDetectiveServer.GetScreenState:input_type -> crabs.evening_detective_server.GetScreenStateReq + 96, // 110: crabs.evening_detective_server.EveningDetectiveServer.GetGameScreens:input_type -> crabs.evening_detective_server.GetGameScreensReq + 98, // 111: crabs.evening_detective_server.EveningDetectiveServer.BindScreen:input_type -> crabs.evening_detective_server.BindScreenReq + 100, // 112: crabs.evening_detective_server.EveningDetectiveServer.UnbindScreen:input_type -> crabs.evening_detective_server.UnbindScreenReq + 102, // 113: crabs.evening_detective_server.EveningDetectiveServer.SetScreenSound:input_type -> crabs.evening_detective_server.SetScreenSoundReq + 105, // 114: crabs.evening_detective_server.EveningDetectiveServer.GetGameMap:input_type -> crabs.evening_detective_server.GetGameMapReq + 107, // 115: crabs.evening_detective_server.EveningDetectiveServer.UpdateGameMapItem:input_type -> crabs.evening_detective_server.UpdateGameMapItemReq + 109, // 116: crabs.evening_detective_server.EveningDetectiveServer.SetScreenMode:input_type -> crabs.evening_detective_server.SetScreenModeReq + 111, // 117: crabs.evening_detective_server.EveningDetectiveServer.SendScreenCommand:input_type -> crabs.evening_detective_server.SendScreenCommandReq + 113, // 118: crabs.evening_detective_server.EveningDetectiveServer.GetScreenResults:input_type -> crabs.evening_detective_server.GetScreenResultsReq + 119, // 119: crabs.evening_detective_server.EveningDetectiveServer.DownloadTeamQR:input_type -> crabs.evening_detective_server.GetGameReq + 121, // 120: crabs.evening_detective_server.EveningDetectiveServer.GetGameAnswers:input_type -> crabs.evening_detective_server.GetGameAnswersReq + 123, // 121: crabs.evening_detective_server.EveningDetectiveServer.GetGameResults:input_type -> crabs.evening_detective_server.GetGameResultsReq + 128, // 122: crabs.evening_detective_server.EveningDetectiveServer.CreateGameReview:input_type -> crabs.evening_detective_server.CreateGameReviewReq + 130, // 123: crabs.evening_detective_server.EveningDetectiveServer.GetGameReviews:input_type -> crabs.evening_detective_server.GetGameReviewsReq + 130, // 124: crabs.evening_detective_server.EveningDetectiveServer.GetGameReviewsForModeration:input_type -> crabs.evening_detective_server.GetGameReviewsReq + 132, // 125: crabs.evening_detective_server.EveningDetectiveServer.ModerateGameReview:input_type -> crabs.evening_detective_server.ModerateGameReviewReq + 134, // 126: crabs.evening_detective_server.EveningDetectiveServer.UpdateGame:input_type -> crabs.evening_detective_server.UpdateGameReq + 136, // 127: crabs.evening_detective_server.EveningDetectiveServer.StartGame:input_type -> crabs.evening_detective_server.StartGameReq + 138, // 128: crabs.evening_detective_server.EveningDetectiveServer.PauseGame:input_type -> crabs.evening_detective_server.PauseGameReq + 140, // 129: crabs.evening_detective_server.EveningDetectiveServer.PlayGame:input_type -> crabs.evening_detective_server.PlayGameReq + 142, // 130: crabs.evening_detective_server.EveningDetectiveServer.FinishGame:input_type -> crabs.evening_detective_server.FinishGameReq + 144, // 131: crabs.evening_detective_server.EveningDetectiveServer.ResetGame:input_type -> crabs.evening_detective_server.ResetGameReq + 146, // 132: crabs.evening_detective_server.EveningDetectiveServer.DeleteGame:input_type -> crabs.evening_detective_server.DeleteGameReq + 148, // 133: crabs.evening_detective_server.EveningDetectiveServer.AddTeam:input_type -> crabs.evening_detective_server.AddTeamReq + 150, // 134: crabs.evening_detective_server.EveningDetectiveServer.UpdateTeam:input_type -> crabs.evening_detective_server.UpdateTeamReq + 152, // 135: crabs.evening_detective_server.EveningDetectiveServer.DeleteTeam:input_type -> crabs.evening_detective_server.DeleteTeamReq + 154, // 136: crabs.evening_detective_server.EveningDetectiveServer.GiveTeamApplications:input_type -> crabs.evening_detective_server.GiveTeamApplicationsReq + 156, // 137: crabs.evening_detective_server.EveningDetectiveServer.GetTeamStory:input_type -> crabs.evening_detective_server.GetTeamStoryReq + 159, // 138: crabs.evening_detective_server.EveningDetectiveServer.AddTeamAction:input_type -> crabs.evening_detective_server.AddTeamActionReq + 161, // 139: crabs.evening_detective_server.EveningDetectiveServer.DeleteLastTeamAction:input_type -> crabs.evening_detective_server.DeleteLastTeamActionReq + 163, // 140: crabs.evening_detective_server.EveningDetectiveServer.GetTeamAnswers:input_type -> crabs.evening_detective_server.GetTeamAnswersReq + 165, // 141: crabs.evening_detective_server.EveningDetectiveServer.SubmitTeamAnswers:input_type -> crabs.evening_detective_server.SubmitTeamAnswersReq + 167, // 142: crabs.evening_detective_server.EveningDetectiveServer.SetTeamAnswerScore:input_type -> crabs.evening_detective_server.SetTeamAnswerScoreReq + 117, // 143: crabs.evening_detective_server.EveningDetectiveServer.GetParticipation:output_type -> crabs.evening_detective_server.ParticipationRsp + 117, // 144: crabs.evening_detective_server.EveningDetectiveServer.AnswerParticipation:output_type -> crabs.evening_detective_server.ParticipationRsp + 3, // 145: crabs.evening_detective_server.EveningDetectiveServer.Ping:output_type -> crabs.evening_detective_server.PingRsp + 5, // 146: crabs.evening_detective_server.EveningDetectiveServer.Echo:output_type -> crabs.evening_detective_server.EchoRsp + 7, // 147: crabs.evening_detective_server.EveningDetectiveServer.Signup:output_type -> crabs.evening_detective_server.SignupRsp + 9, // 148: crabs.evening_detective_server.EveningDetectiveServer.RefreshPassword:output_type -> crabs.evening_detective_server.RefreshPasswordRsp + 11, // 149: crabs.evening_detective_server.EveningDetectiveServer.Login:output_type -> crabs.evening_detective_server.LoginRsp + 13, // 150: crabs.evening_detective_server.EveningDetectiveServer.Refresh:output_type -> crabs.evening_detective_server.RefreshRsp + 15, // 151: crabs.evening_detective_server.EveningDetectiveServer.DeleteAccount:output_type -> crabs.evening_detective_server.DeleteAccountRsp + 17, // 152: crabs.evening_detective_server.EveningDetectiveServer.GetTerms:output_type -> crabs.evening_detective_server.GetTermsRsp + 19, // 153: crabs.evening_detective_server.EveningDetectiveServer.GetPrivacy:output_type -> crabs.evening_detective_server.GetPrivacyRsp + 21, // 154: crabs.evening_detective_server.EveningDetectiveServer.GetConsent:output_type -> crabs.evening_detective_server.GetConsentRsp + 23, // 155: crabs.evening_detective_server.EveningDetectiveServer.GetUsers:output_type -> crabs.evening_detective_server.GetUsersRsp + 26, // 156: crabs.evening_detective_server.EveningDetectiveServer.GetUserById:output_type -> crabs.evening_detective_server.GetUserByIdRsp + 28, // 157: crabs.evening_detective_server.EveningDetectiveServer.GetMe:output_type -> crabs.evening_detective_server.GetMeRsp + 30, // 158: crabs.evening_detective_server.EveningDetectiveServer.ChangeUserPassword:output_type -> crabs.evening_detective_server.ChangeUserPasswordRsp + 32, // 159: crabs.evening_detective_server.EveningDetectiveServer.AddUserRole:output_type -> crabs.evening_detective_server.AddUserRoleRsp + 34, // 160: crabs.evening_detective_server.EveningDetectiveServer.DeleteUserRole:output_type -> crabs.evening_detective_server.DeleteUserRoleRsp + 36, // 161: crabs.evening_detective_server.EveningDetectiveServer.GetPermissions:output_type -> crabs.evening_detective_server.GetPermissionsRsp + 38, // 162: crabs.evening_detective_server.EveningDetectiveServer.UploadFile:output_type -> crabs.evening_detective_server.UploadFileRsp + 172, // 163: crabs.evening_detective_server.EveningDetectiveServer.DownloadFile:output_type -> google.api.HttpBody + 41, // 164: crabs.evening_detective_server.EveningDetectiveServer.AddScenario:output_type -> crabs.evening_detective_server.AddScenarioRsp + 43, // 165: crabs.evening_detective_server.EveningDetectiveServer.GetMyScenarios:output_type -> crabs.evening_detective_server.GetMyScenariosRsp + 45, // 166: crabs.evening_detective_server.EveningDetectiveServer.GetScenariosCatalog:output_type -> crabs.evening_detective_server.GetScenariosCatalogRsp + 47, // 167: crabs.evening_detective_server.EveningDetectiveServer.GetFullScenario:output_type -> crabs.evening_detective_server.GetScenarioRsp + 47, // 168: crabs.evening_detective_server.EveningDetectiveServer.GetScenario:output_type -> crabs.evening_detective_server.GetScenarioRsp + 61, // 169: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenario:output_type -> crabs.evening_detective_server.UpdateScenarioRsp + 63, // 170: crabs.evening_detective_server.EveningDetectiveServer.PublicScenario:output_type -> crabs.evening_detective_server.PublicScenarioRsp + 65, // 171: crabs.evening_detective_server.EveningDetectiveServer.DraftScenario:output_type -> crabs.evening_detective_server.DraftScenarioRsp + 67, // 172: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenario:output_type -> crabs.evening_detective_server.DeleteScenarioRsp + 69, // 173: crabs.evening_detective_server.EveningDetectiveServer.AddScenarioPlace:output_type -> crabs.evening_detective_server.AddScenarioPlaceRsp + 71, // 174: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioPlace:output_type -> crabs.evening_detective_server.UpdateScenarioPlaceRsp + 73, // 175: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenarioPlace:output_type -> crabs.evening_detective_server.DeleteScenarioPlaceRsp + 79, // 176: crabs.evening_detective_server.EveningDetectiveServer.AddScenarioQuestion:output_type -> crabs.evening_detective_server.AddScenarioQuestionRsp + 81, // 177: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioQuestion:output_type -> crabs.evening_detective_server.UpdateScenarioQuestionRsp + 83, // 178: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenarioQuestion:output_type -> crabs.evening_detective_server.DeleteScenarioQuestionRsp + 170, // 179: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioBackground:output_type -> crabs.evening_detective_server.UpdateScenarioBackgroundRsp + 77, // 180: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioIntro:output_type -> crabs.evening_detective_server.UpdateScenarioIntroRsp + 75, // 181: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioConclusion:output_type -> crabs.evening_detective_server.UpdateScenarioConclusionRsp + 172, // 182: crabs.evening_detective_server.EveningDetectiveServer.DownloadScenarioArchive:output_type -> google.api.HttpBody + 85, // 183: crabs.evening_detective_server.EveningDetectiveServer.UploadScenarioArchive:output_type -> crabs.evening_detective_server.UploadScenarioArchiveRsp + 87, // 184: crabs.evening_detective_server.EveningDetectiveServer.AddGame:output_type -> crabs.evening_detective_server.AddGameRsp + 89, // 185: crabs.evening_detective_server.EveningDetectiveServer.GetGames:output_type -> crabs.evening_detective_server.GetGamesRsp + 120, // 186: crabs.evening_detective_server.EveningDetectiveServer.GetGame:output_type -> crabs.evening_detective_server.GetGameRsp + 93, // 187: crabs.evening_detective_server.EveningDetectiveServer.CreateScreenSession:output_type -> crabs.evening_detective_server.CreateScreenSessionRsp + 95, // 188: crabs.evening_detective_server.EveningDetectiveServer.GetScreenState:output_type -> crabs.evening_detective_server.GetScreenStateRsp + 97, // 189: crabs.evening_detective_server.EveningDetectiveServer.GetGameScreens:output_type -> crabs.evening_detective_server.GetGameScreensRsp + 99, // 190: crabs.evening_detective_server.EveningDetectiveServer.BindScreen:output_type -> crabs.evening_detective_server.BindScreenRsp + 101, // 191: crabs.evening_detective_server.EveningDetectiveServer.UnbindScreen:output_type -> crabs.evening_detective_server.UnbindScreenRsp + 103, // 192: crabs.evening_detective_server.EveningDetectiveServer.SetScreenSound:output_type -> crabs.evening_detective_server.SetScreenSoundRsp + 106, // 193: crabs.evening_detective_server.EveningDetectiveServer.GetGameMap:output_type -> crabs.evening_detective_server.GetGameMapRsp + 108, // 194: crabs.evening_detective_server.EveningDetectiveServer.UpdateGameMapItem:output_type -> crabs.evening_detective_server.UpdateGameMapItemRsp + 110, // 195: crabs.evening_detective_server.EveningDetectiveServer.SetScreenMode:output_type -> crabs.evening_detective_server.SetScreenModeRsp + 112, // 196: crabs.evening_detective_server.EveningDetectiveServer.SendScreenCommand:output_type -> crabs.evening_detective_server.SendScreenCommandRsp + 114, // 197: crabs.evening_detective_server.EveningDetectiveServer.GetScreenResults:output_type -> crabs.evening_detective_server.GetScreenResultsRsp + 172, // 198: crabs.evening_detective_server.EveningDetectiveServer.DownloadTeamQR:output_type -> google.api.HttpBody + 122, // 199: crabs.evening_detective_server.EveningDetectiveServer.GetGameAnswers:output_type -> crabs.evening_detective_server.GetGameAnswersRsp + 126, // 200: crabs.evening_detective_server.EveningDetectiveServer.GetGameResults:output_type -> crabs.evening_detective_server.GetGameResultsRsp + 129, // 201: crabs.evening_detective_server.EveningDetectiveServer.CreateGameReview:output_type -> crabs.evening_detective_server.CreateGameReviewRsp + 131, // 202: crabs.evening_detective_server.EveningDetectiveServer.GetGameReviews:output_type -> crabs.evening_detective_server.GetGameReviewsRsp + 131, // 203: crabs.evening_detective_server.EveningDetectiveServer.GetGameReviewsForModeration:output_type -> crabs.evening_detective_server.GetGameReviewsRsp + 133, // 204: crabs.evening_detective_server.EveningDetectiveServer.ModerateGameReview:output_type -> crabs.evening_detective_server.ModerateGameReviewRsp + 135, // 205: crabs.evening_detective_server.EveningDetectiveServer.UpdateGame:output_type -> crabs.evening_detective_server.UpdateGameRsp + 137, // 206: crabs.evening_detective_server.EveningDetectiveServer.StartGame:output_type -> crabs.evening_detective_server.StartGameRsp + 139, // 207: crabs.evening_detective_server.EveningDetectiveServer.PauseGame:output_type -> crabs.evening_detective_server.PauseGameRsp + 141, // 208: crabs.evening_detective_server.EveningDetectiveServer.PlayGame:output_type -> crabs.evening_detective_server.PlayGameRsp + 143, // 209: crabs.evening_detective_server.EveningDetectiveServer.FinishGame:output_type -> crabs.evening_detective_server.FinishGameRsp + 145, // 210: crabs.evening_detective_server.EveningDetectiveServer.ResetGame:output_type -> crabs.evening_detective_server.ResetGameRsp + 147, // 211: crabs.evening_detective_server.EveningDetectiveServer.DeleteGame:output_type -> crabs.evening_detective_server.DeleteGameRsp + 149, // 212: crabs.evening_detective_server.EveningDetectiveServer.AddTeam:output_type -> crabs.evening_detective_server.AddTeamRsp + 151, // 213: crabs.evening_detective_server.EveningDetectiveServer.UpdateTeam:output_type -> crabs.evening_detective_server.UpdateTeamRsp + 153, // 214: crabs.evening_detective_server.EveningDetectiveServer.DeleteTeam:output_type -> crabs.evening_detective_server.DeleteTeamRsp + 155, // 215: crabs.evening_detective_server.EveningDetectiveServer.GiveTeamApplications:output_type -> crabs.evening_detective_server.GiveTeamApplicationsRsp + 157, // 216: crabs.evening_detective_server.EveningDetectiveServer.GetTeamStory:output_type -> crabs.evening_detective_server.GetTeamStoryRsp + 160, // 217: crabs.evening_detective_server.EveningDetectiveServer.AddTeamAction:output_type -> crabs.evening_detective_server.AddTeamActionRsp + 162, // 218: crabs.evening_detective_server.EveningDetectiveServer.DeleteLastTeamAction:output_type -> crabs.evening_detective_server.DeleteLastTeamActionRsp + 164, // 219: crabs.evening_detective_server.EveningDetectiveServer.GetTeamAnswers:output_type -> crabs.evening_detective_server.GetTeamAnswersRsp + 166, // 220: crabs.evening_detective_server.EveningDetectiveServer.SubmitTeamAnswers:output_type -> crabs.evening_detective_server.SubmitTeamAnswersRsp + 168, // 221: crabs.evening_detective_server.EveningDetectiveServer.SetTeamAnswerScore:output_type -> crabs.evening_detective_server.SetTeamAnswerScoreRsp + 143, // [143:222] is the sub-list for method output_type + 64, // [64:143] is the sub-list for method input_type + 64, // [64:64] is the sub-list for extension type_name + 64, // [64:64] is the sub-list for extension extendee + 0, // [0:64] is the sub-list for field type_name } func init() { file_main_proto_init() } @@ -9880,14 +10388,14 @@ func file_main_proto_init() { file_main_proto_msgTypes[56].OneofWrappers = []any{} file_main_proto_msgTypes[88].OneofWrappers = []any{} file_main_proto_msgTypes[89].OneofWrappers = []any{} - file_main_proto_msgTypes[158].OneofWrappers = []any{} + file_main_proto_msgTypes[165].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_main_proto_rawDesc), len(file_main_proto_rawDesc)), NumEnums: 2, - NumMessages: 162, + NumMessages: 169, NumExtensions: 0, NumServices: 1, }, diff --git a/proto/main.pb.gw.go b/proto/main.pb.gw.go index 6bf3d02..cf3c4aa 100644 --- a/proto/main.pb.gw.go +++ b/proto/main.pb.gw.go @@ -2150,6 +2150,174 @@ func local_request_EveningDetectiveServer_GetGameResults_0(ctx context.Context, return msg, metadata, err } +func request_EveningDetectiveServer_CreateGameReview_0(ctx context.Context, marshaler runtime.Marshaler, client EveningDetectiveServerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq CreateGameReviewReq + metadata runtime.ServerMetadata + err error + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } + val, ok := pathParams["gameId"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "gameId") + } + protoReq.GameId, err = runtime.Int32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gameId", err) + } + msg, err := client.CreateGameReview(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_EveningDetectiveServer_CreateGameReview_0(ctx context.Context, marshaler runtime.Marshaler, server EveningDetectiveServerServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq CreateGameReviewReq + metadata runtime.ServerMetadata + err error + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + val, ok := pathParams["gameId"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "gameId") + } + protoReq.GameId, err = runtime.Int32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gameId", err) + } + msg, err := server.CreateGameReview(ctx, &protoReq) + return msg, metadata, err +} + +func request_EveningDetectiveServer_GetGameReviews_0(ctx context.Context, marshaler runtime.Marshaler, client EveningDetectiveServerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq GetGameReviewsReq + metadata runtime.ServerMetadata + err error + ) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } + val, ok := pathParams["gameId"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "gameId") + } + protoReq.GameId, err = runtime.Int32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gameId", err) + } + msg, err := client.GetGameReviews(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_EveningDetectiveServer_GetGameReviews_0(ctx context.Context, marshaler runtime.Marshaler, server EveningDetectiveServerServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq GetGameReviewsReq + metadata runtime.ServerMetadata + err error + ) + val, ok := pathParams["gameId"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "gameId") + } + protoReq.GameId, err = runtime.Int32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gameId", err) + } + msg, err := server.GetGameReviews(ctx, &protoReq) + return msg, metadata, err +} + +func request_EveningDetectiveServer_GetGameReviewsForModeration_0(ctx context.Context, marshaler runtime.Marshaler, client EveningDetectiveServerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq GetGameReviewsReq + metadata runtime.ServerMetadata + err error + ) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } + val, ok := pathParams["gameId"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "gameId") + } + protoReq.GameId, err = runtime.Int32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gameId", err) + } + msg, err := client.GetGameReviewsForModeration(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_EveningDetectiveServer_GetGameReviewsForModeration_0(ctx context.Context, marshaler runtime.Marshaler, server EveningDetectiveServerServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq GetGameReviewsReq + metadata runtime.ServerMetadata + err error + ) + val, ok := pathParams["gameId"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "gameId") + } + protoReq.GameId, err = runtime.Int32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gameId", err) + } + msg, err := server.GetGameReviewsForModeration(ctx, &protoReq) + return msg, metadata, err +} + +func request_EveningDetectiveServer_ModerateGameReview_0(ctx context.Context, marshaler runtime.Marshaler, client EveningDetectiveServerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq ModerateGameReviewReq + metadata runtime.ServerMetadata + err error + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } + val, ok := pathParams["id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") + } + protoReq.Id, err = runtime.Int32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) + } + msg, err := client.ModerateGameReview(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_EveningDetectiveServer_ModerateGameReview_0(ctx context.Context, marshaler runtime.Marshaler, server EveningDetectiveServerServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq ModerateGameReviewReq + metadata runtime.ServerMetadata + err error + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + val, ok := pathParams["id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") + } + protoReq.Id, err = runtime.Int32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) + } + msg, err := server.ModerateGameReview(ctx, &protoReq) + return msg, metadata, err +} + func request_EveningDetectiveServer_UpdateGame_0(ctx context.Context, marshaler runtime.Marshaler, client EveningDetectiveServerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var ( protoReq UpdateGameReq @@ -4077,6 +4245,86 @@ func RegisterEveningDetectiveServerHandlerServer(ctx context.Context, mux *runti } forward_EveningDetectiveServer_GetGameResults_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) + mux.Handle(http.MethodPost, pattern_EveningDetectiveServer_CreateGameReview_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/crabs.evening_detective_server.EveningDetectiveServer/CreateGameReview", runtime.WithHTTPPathPattern("/api/games/{gameId}/reviews")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_EveningDetectiveServer_CreateGameReview_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_EveningDetectiveServer_CreateGameReview_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodGet, pattern_EveningDetectiveServer_GetGameReviews_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/crabs.evening_detective_server.EveningDetectiveServer/GetGameReviews", runtime.WithHTTPPathPattern("/api/games/{gameId}/reviews")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_EveningDetectiveServer_GetGameReviews_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_EveningDetectiveServer_GetGameReviews_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodGet, pattern_EveningDetectiveServer_GetGameReviewsForModeration_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/crabs.evening_detective_server.EveningDetectiveServer/GetGameReviewsForModeration", runtime.WithHTTPPathPattern("/api/admin/games/{gameId}/reviews")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_EveningDetectiveServer_GetGameReviewsForModeration_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_EveningDetectiveServer_GetGameReviewsForModeration_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPut, pattern_EveningDetectiveServer_ModerateGameReview_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/crabs.evening_detective_server.EveningDetectiveServer/ModerateGameReview", runtime.WithHTTPPathPattern("/api/admin/game-reviews/{id}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_EveningDetectiveServer_ModerateGameReview_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_EveningDetectiveServer_ModerateGameReview_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) mux.Handle(http.MethodPut, pattern_EveningDetectiveServer_UpdateGame_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -5443,6 +5691,74 @@ func RegisterEveningDetectiveServerHandlerClient(ctx context.Context, mux *runti } forward_EveningDetectiveServer_GetGameResults_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) + mux.Handle(http.MethodPost, pattern_EveningDetectiveServer_CreateGameReview_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/crabs.evening_detective_server.EveningDetectiveServer/CreateGameReview", runtime.WithHTTPPathPattern("/api/games/{gameId}/reviews")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_EveningDetectiveServer_CreateGameReview_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_EveningDetectiveServer_CreateGameReview_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodGet, pattern_EveningDetectiveServer_GetGameReviews_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/crabs.evening_detective_server.EveningDetectiveServer/GetGameReviews", runtime.WithHTTPPathPattern("/api/games/{gameId}/reviews")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_EveningDetectiveServer_GetGameReviews_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_EveningDetectiveServer_GetGameReviews_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodGet, pattern_EveningDetectiveServer_GetGameReviewsForModeration_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/crabs.evening_detective_server.EveningDetectiveServer/GetGameReviewsForModeration", runtime.WithHTTPPathPattern("/api/admin/games/{gameId}/reviews")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_EveningDetectiveServer_GetGameReviewsForModeration_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_EveningDetectiveServer_GetGameReviewsForModeration_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPut, pattern_EveningDetectiveServer_ModerateGameReview_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/crabs.evening_detective_server.EveningDetectiveServer/ModerateGameReview", runtime.WithHTTPPathPattern("/api/admin/game-reviews/{id}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_EveningDetectiveServer_ModerateGameReview_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_EveningDetectiveServer_ModerateGameReview_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) mux.Handle(http.MethodPut, pattern_EveningDetectiveServer_UpdateGame_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -5736,157 +6052,165 @@ func RegisterEveningDetectiveServerHandlerClient(ctx context.Context, mux *runti } var ( - pattern_EveningDetectiveServer_GetParticipation_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "participation", "get"}, "")) - pattern_EveningDetectiveServer_AnswerParticipation_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "participation", "answer"}, "")) - pattern_EveningDetectiveServer_Ping_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "test", "ping"}, "")) - pattern_EveningDetectiveServer_Echo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "test", "echo"}, "")) - pattern_EveningDetectiveServer_Signup_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "auth", "signup"}, "")) - pattern_EveningDetectiveServer_RefreshPassword_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "auth", "refresh-password"}, "")) - pattern_EveningDetectiveServer_Login_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "auth", "login"}, "")) - pattern_EveningDetectiveServer_Refresh_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "auth", "refresh"}, "")) - pattern_EveningDetectiveServer_DeleteAccount_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "auth", "delete-account"}, "")) - pattern_EveningDetectiveServer_GetTerms_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"api", "terms"}, "")) - pattern_EveningDetectiveServer_GetPrivacy_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"api", "privacy"}, "")) - pattern_EveningDetectiveServer_GetConsent_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"api", "consent"}, "")) - pattern_EveningDetectiveServer_GetUsers_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"api", "users"}, "")) - pattern_EveningDetectiveServer_GetUserById_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"api", "users", "id"}, "")) - pattern_EveningDetectiveServer_GetMe_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "users", "me"}, "")) - pattern_EveningDetectiveServer_ChangeUserPassword_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "users", "id", "password"}, "")) - pattern_EveningDetectiveServer_AddUserRole_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"api", "users", "id", "role", "add"}, "")) - pattern_EveningDetectiveServer_DeleteUserRole_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"api", "users", "id", "role", "delete"}, "")) - pattern_EveningDetectiveServer_GetPermissions_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "ui", "permissions"}, "")) - pattern_EveningDetectiveServer_UploadFile_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "files", "upload"}, "")) - pattern_EveningDetectiveServer_DownloadFile_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"api", "files", "filename"}, "")) - pattern_EveningDetectiveServer_AddScenario_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"api", "scenario"}, "")) - pattern_EveningDetectiveServer_GetMyScenarios_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"api", "my-scenarios"}, "")) - pattern_EveningDetectiveServer_GetScenariosCatalog_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"api", "catalog"}, "")) - pattern_EveningDetectiveServer_GetFullScenario_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "scenarios", "id", "full"}, "")) - pattern_EveningDetectiveServer_GetScenario_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"api", "scenarios", "id"}, "")) - pattern_EveningDetectiveServer_UpdateScenario_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"api", "scenarios", "id"}, "")) - pattern_EveningDetectiveServer_PublicScenario_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "scenarios", "id", "public"}, "")) - pattern_EveningDetectiveServer_DraftScenario_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "scenarios", "id", "draft"}, "")) - pattern_EveningDetectiveServer_DeleteScenario_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"api", "scenarios", "id"}, "")) - pattern_EveningDetectiveServer_AddScenarioPlace_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "scenarios", "id", "places"}, "")) - pattern_EveningDetectiveServer_UpdateScenarioPlace_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "scenarios", "id", "places", "code"}, "")) - pattern_EveningDetectiveServer_DeleteScenarioPlace_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "scenarios", "id", "places", "code"}, "")) - pattern_EveningDetectiveServer_AddScenarioQuestion_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "scenarios", "id", "questions"}, "")) - pattern_EveningDetectiveServer_UpdateScenarioQuestion_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "scenarios", "id", "questions", "code"}, "")) - pattern_EveningDetectiveServer_DeleteScenarioQuestion_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "scenarios", "id", "questions", "code"}, "")) - pattern_EveningDetectiveServer_UpdateScenarioBackground_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "scenarios", "id", "background"}, "")) - pattern_EveningDetectiveServer_UpdateScenarioIntro_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "scenarios", "id", "introduction"}, "")) - pattern_EveningDetectiveServer_UpdateScenarioConclusion_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "scenarios", "id", "conclusion"}, "")) - pattern_EveningDetectiveServer_DownloadScenarioArchive_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "scenarios", "id", "archive"}, "")) - pattern_EveningDetectiveServer_UploadScenarioArchive_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "scenarios", "archive"}, "")) - pattern_EveningDetectiveServer_AddGame_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"api", "games"}, "")) - pattern_EveningDetectiveServer_GetGames_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"api", "games"}, "")) - pattern_EveningDetectiveServer_GetGame_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"api", "games", "id"}, "")) - pattern_EveningDetectiveServer_CreateScreenSession_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"api", "screens"}, "")) - pattern_EveningDetectiveServer_GetScreenState_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "screens", "state"}, "")) - pattern_EveningDetectiveServer_GetGameScreens_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "games", "gameId", "screens"}, "")) - pattern_EveningDetectiveServer_BindScreen_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "screens", "screenId", "bind"}, "")) - pattern_EveningDetectiveServer_UnbindScreen_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "screens", "screenId", "unbind"}, "")) - pattern_EveningDetectiveServer_SetScreenSound_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "screens", "screenId", "sound"}, "")) - pattern_EveningDetectiveServer_GetGameMap_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "games", "gameId", "map"}, "")) - pattern_EveningDetectiveServer_UpdateGameMapItem_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{"api", "games", "gameId", "map", "items", "kind", "itemId"}, "")) - pattern_EveningDetectiveServer_SetScreenMode_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"api", "games", "gameId", "screens", "mode"}, "")) - pattern_EveningDetectiveServer_SendScreenCommand_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"api", "games", "gameId", "screens", "command"}, "")) - pattern_EveningDetectiveServer_GetScreenResults_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "screens", "results"}, "")) - pattern_EveningDetectiveServer_DownloadTeamQR_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"api", "games", "id", "teams", "qr.pdf"}, "")) - pattern_EveningDetectiveServer_GetGameAnswers_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "games", "gameId", "answers"}, "")) - pattern_EveningDetectiveServer_GetGameResults_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "games", "gameId", "results"}, "")) - pattern_EveningDetectiveServer_UpdateGame_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"api", "games", "id"}, "")) - pattern_EveningDetectiveServer_StartGame_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "games", "id", "start"}, "")) - pattern_EveningDetectiveServer_PauseGame_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "games", "id", "pause"}, "")) - pattern_EveningDetectiveServer_PlayGame_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "games", "id", "play"}, "")) - pattern_EveningDetectiveServer_FinishGame_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "games", "id", "finish"}, "")) - pattern_EveningDetectiveServer_ResetGame_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "games", "id", "reset"}, "")) - pattern_EveningDetectiveServer_DeleteGame_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"api", "games", "id"}, "")) - pattern_EveningDetectiveServer_AddTeam_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"api", "teams"}, "")) - pattern_EveningDetectiveServer_UpdateTeam_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"api", "teams", "id"}, "")) - pattern_EveningDetectiveServer_DeleteTeam_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"api", "teams", "id"}, "")) - pattern_EveningDetectiveServer_GiveTeamApplications_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "teams", "id", "applications"}, "")) - pattern_EveningDetectiveServer_GetTeamStory_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "teams", "id", "story"}, "")) - pattern_EveningDetectiveServer_AddTeamAction_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "teams", "id", "actions"}, "")) - pattern_EveningDetectiveServer_DeleteLastTeamAction_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "teams", "id", "last-actions"}, "")) - pattern_EveningDetectiveServer_GetTeamAnswers_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "teams", "id", "answers"}, "")) - pattern_EveningDetectiveServer_SubmitTeamAnswers_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "teams", "id", "answers"}, "")) - pattern_EveningDetectiveServer_SetTeamAnswerScore_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"api", "teams", "id", "answers", "questionCode", "score"}, "")) + pattern_EveningDetectiveServer_GetParticipation_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "participation", "get"}, "")) + pattern_EveningDetectiveServer_AnswerParticipation_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "participation", "answer"}, "")) + pattern_EveningDetectiveServer_Ping_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "test", "ping"}, "")) + pattern_EveningDetectiveServer_Echo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "test", "echo"}, "")) + pattern_EveningDetectiveServer_Signup_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "auth", "signup"}, "")) + pattern_EveningDetectiveServer_RefreshPassword_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "auth", "refresh-password"}, "")) + pattern_EveningDetectiveServer_Login_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "auth", "login"}, "")) + pattern_EveningDetectiveServer_Refresh_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "auth", "refresh"}, "")) + pattern_EveningDetectiveServer_DeleteAccount_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "auth", "delete-account"}, "")) + pattern_EveningDetectiveServer_GetTerms_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"api", "terms"}, "")) + pattern_EveningDetectiveServer_GetPrivacy_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"api", "privacy"}, "")) + pattern_EveningDetectiveServer_GetConsent_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"api", "consent"}, "")) + pattern_EveningDetectiveServer_GetUsers_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"api", "users"}, "")) + pattern_EveningDetectiveServer_GetUserById_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"api", "users", "id"}, "")) + pattern_EveningDetectiveServer_GetMe_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "users", "me"}, "")) + pattern_EveningDetectiveServer_ChangeUserPassword_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "users", "id", "password"}, "")) + pattern_EveningDetectiveServer_AddUserRole_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"api", "users", "id", "role", "add"}, "")) + pattern_EveningDetectiveServer_DeleteUserRole_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"api", "users", "id", "role", "delete"}, "")) + pattern_EveningDetectiveServer_GetPermissions_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "ui", "permissions"}, "")) + pattern_EveningDetectiveServer_UploadFile_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "files", "upload"}, "")) + pattern_EveningDetectiveServer_DownloadFile_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"api", "files", "filename"}, "")) + pattern_EveningDetectiveServer_AddScenario_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"api", "scenario"}, "")) + pattern_EveningDetectiveServer_GetMyScenarios_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"api", "my-scenarios"}, "")) + pattern_EveningDetectiveServer_GetScenariosCatalog_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"api", "catalog"}, "")) + pattern_EveningDetectiveServer_GetFullScenario_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "scenarios", "id", "full"}, "")) + pattern_EveningDetectiveServer_GetScenario_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"api", "scenarios", "id"}, "")) + pattern_EveningDetectiveServer_UpdateScenario_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"api", "scenarios", "id"}, "")) + pattern_EveningDetectiveServer_PublicScenario_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "scenarios", "id", "public"}, "")) + pattern_EveningDetectiveServer_DraftScenario_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "scenarios", "id", "draft"}, "")) + pattern_EveningDetectiveServer_DeleteScenario_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"api", "scenarios", "id"}, "")) + pattern_EveningDetectiveServer_AddScenarioPlace_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "scenarios", "id", "places"}, "")) + pattern_EveningDetectiveServer_UpdateScenarioPlace_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "scenarios", "id", "places", "code"}, "")) + pattern_EveningDetectiveServer_DeleteScenarioPlace_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "scenarios", "id", "places", "code"}, "")) + pattern_EveningDetectiveServer_AddScenarioQuestion_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "scenarios", "id", "questions"}, "")) + pattern_EveningDetectiveServer_UpdateScenarioQuestion_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "scenarios", "id", "questions", "code"}, "")) + pattern_EveningDetectiveServer_DeleteScenarioQuestion_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "scenarios", "id", "questions", "code"}, "")) + pattern_EveningDetectiveServer_UpdateScenarioBackground_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "scenarios", "id", "background"}, "")) + pattern_EveningDetectiveServer_UpdateScenarioIntro_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "scenarios", "id", "introduction"}, "")) + pattern_EveningDetectiveServer_UpdateScenarioConclusion_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "scenarios", "id", "conclusion"}, "")) + pattern_EveningDetectiveServer_DownloadScenarioArchive_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "scenarios", "id", "archive"}, "")) + pattern_EveningDetectiveServer_UploadScenarioArchive_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "scenarios", "archive"}, "")) + pattern_EveningDetectiveServer_AddGame_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"api", "games"}, "")) + pattern_EveningDetectiveServer_GetGames_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"api", "games"}, "")) + pattern_EveningDetectiveServer_GetGame_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"api", "games", "id"}, "")) + pattern_EveningDetectiveServer_CreateScreenSession_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"api", "screens"}, "")) + pattern_EveningDetectiveServer_GetScreenState_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "screens", "state"}, "")) + pattern_EveningDetectiveServer_GetGameScreens_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "games", "gameId", "screens"}, "")) + pattern_EveningDetectiveServer_BindScreen_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "screens", "screenId", "bind"}, "")) + pattern_EveningDetectiveServer_UnbindScreen_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "screens", "screenId", "unbind"}, "")) + pattern_EveningDetectiveServer_SetScreenSound_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "screens", "screenId", "sound"}, "")) + pattern_EveningDetectiveServer_GetGameMap_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "games", "gameId", "map"}, "")) + pattern_EveningDetectiveServer_UpdateGameMapItem_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{"api", "games", "gameId", "map", "items", "kind", "itemId"}, "")) + pattern_EveningDetectiveServer_SetScreenMode_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"api", "games", "gameId", "screens", "mode"}, "")) + pattern_EveningDetectiveServer_SendScreenCommand_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"api", "games", "gameId", "screens", "command"}, "")) + pattern_EveningDetectiveServer_GetScreenResults_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "screens", "results"}, "")) + pattern_EveningDetectiveServer_DownloadTeamQR_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"api", "games", "id", "teams", "qr.pdf"}, "")) + pattern_EveningDetectiveServer_GetGameAnswers_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "games", "gameId", "answers"}, "")) + pattern_EveningDetectiveServer_GetGameResults_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "games", "gameId", "results"}, "")) + pattern_EveningDetectiveServer_CreateGameReview_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "games", "gameId", "reviews"}, "")) + pattern_EveningDetectiveServer_GetGameReviews_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "games", "gameId", "reviews"}, "")) + pattern_EveningDetectiveServer_GetGameReviewsForModeration_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"api", "admin", "games", "gameId", "reviews"}, "")) + pattern_EveningDetectiveServer_ModerateGameReview_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"api", "admin", "game-reviews", "id"}, "")) + pattern_EveningDetectiveServer_UpdateGame_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"api", "games", "id"}, "")) + pattern_EveningDetectiveServer_StartGame_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "games", "id", "start"}, "")) + pattern_EveningDetectiveServer_PauseGame_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "games", "id", "pause"}, "")) + pattern_EveningDetectiveServer_PlayGame_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "games", "id", "play"}, "")) + pattern_EveningDetectiveServer_FinishGame_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "games", "id", "finish"}, "")) + pattern_EveningDetectiveServer_ResetGame_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "games", "id", "reset"}, "")) + pattern_EveningDetectiveServer_DeleteGame_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"api", "games", "id"}, "")) + pattern_EveningDetectiveServer_AddTeam_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"api", "teams"}, "")) + pattern_EveningDetectiveServer_UpdateTeam_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"api", "teams", "id"}, "")) + pattern_EveningDetectiveServer_DeleteTeam_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"api", "teams", "id"}, "")) + pattern_EveningDetectiveServer_GiveTeamApplications_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "teams", "id", "applications"}, "")) + pattern_EveningDetectiveServer_GetTeamStory_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "teams", "id", "story"}, "")) + pattern_EveningDetectiveServer_AddTeamAction_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "teams", "id", "actions"}, "")) + pattern_EveningDetectiveServer_DeleteLastTeamAction_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "teams", "id", "last-actions"}, "")) + pattern_EveningDetectiveServer_GetTeamAnswers_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "teams", "id", "answers"}, "")) + pattern_EveningDetectiveServer_SubmitTeamAnswers_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "teams", "id", "answers"}, "")) + pattern_EveningDetectiveServer_SetTeamAnswerScore_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"api", "teams", "id", "answers", "questionCode", "score"}, "")) ) var ( - forward_EveningDetectiveServer_GetParticipation_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_AnswerParticipation_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_Ping_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_Echo_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_Signup_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_RefreshPassword_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_Login_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_Refresh_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_DeleteAccount_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_GetTerms_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_GetPrivacy_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_GetConsent_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_GetUsers_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_GetUserById_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_GetMe_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_ChangeUserPassword_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_AddUserRole_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_DeleteUserRole_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_GetPermissions_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_UploadFile_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_DownloadFile_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_AddScenario_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_GetMyScenarios_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_GetScenariosCatalog_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_GetFullScenario_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_GetScenario_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_UpdateScenario_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_PublicScenario_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_DraftScenario_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_DeleteScenario_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_AddScenarioPlace_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_UpdateScenarioPlace_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_DeleteScenarioPlace_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_AddScenarioQuestion_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_UpdateScenarioQuestion_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_DeleteScenarioQuestion_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_UpdateScenarioBackground_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_UpdateScenarioIntro_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_UpdateScenarioConclusion_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_DownloadScenarioArchive_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_UploadScenarioArchive_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_AddGame_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_GetGames_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_GetGame_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_CreateScreenSession_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_GetScreenState_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_GetGameScreens_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_BindScreen_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_UnbindScreen_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_SetScreenSound_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_GetGameMap_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_UpdateGameMapItem_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_SetScreenMode_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_SendScreenCommand_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_GetScreenResults_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_DownloadTeamQR_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_GetGameAnswers_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_GetGameResults_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_UpdateGame_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_StartGame_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_PauseGame_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_PlayGame_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_FinishGame_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_ResetGame_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_DeleteGame_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_AddTeam_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_UpdateTeam_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_DeleteTeam_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_GiveTeamApplications_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_GetTeamStory_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_AddTeamAction_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_DeleteLastTeamAction_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_GetTeamAnswers_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_SubmitTeamAnswers_0 = runtime.ForwardResponseMessage - forward_EveningDetectiveServer_SetTeamAnswerScore_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_GetParticipation_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_AnswerParticipation_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_Ping_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_Echo_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_Signup_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_RefreshPassword_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_Login_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_Refresh_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_DeleteAccount_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_GetTerms_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_GetPrivacy_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_GetConsent_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_GetUsers_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_GetUserById_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_GetMe_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_ChangeUserPassword_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_AddUserRole_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_DeleteUserRole_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_GetPermissions_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_UploadFile_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_DownloadFile_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_AddScenario_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_GetMyScenarios_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_GetScenariosCatalog_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_GetFullScenario_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_GetScenario_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_UpdateScenario_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_PublicScenario_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_DraftScenario_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_DeleteScenario_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_AddScenarioPlace_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_UpdateScenarioPlace_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_DeleteScenarioPlace_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_AddScenarioQuestion_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_UpdateScenarioQuestion_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_DeleteScenarioQuestion_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_UpdateScenarioBackground_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_UpdateScenarioIntro_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_UpdateScenarioConclusion_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_DownloadScenarioArchive_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_UploadScenarioArchive_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_AddGame_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_GetGames_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_GetGame_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_CreateScreenSession_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_GetScreenState_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_GetGameScreens_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_BindScreen_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_UnbindScreen_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_SetScreenSound_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_GetGameMap_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_UpdateGameMapItem_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_SetScreenMode_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_SendScreenCommand_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_GetScreenResults_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_DownloadTeamQR_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_GetGameAnswers_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_GetGameResults_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_CreateGameReview_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_GetGameReviews_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_GetGameReviewsForModeration_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_ModerateGameReview_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_UpdateGame_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_StartGame_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_PauseGame_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_PlayGame_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_FinishGame_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_ResetGame_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_DeleteGame_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_AddTeam_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_UpdateTeam_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_DeleteTeam_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_GiveTeamApplications_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_GetTeamStory_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_AddTeamAction_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_DeleteLastTeamAction_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_GetTeamAnswers_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_SubmitTeamAnswers_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_SetTeamAnswerScore_0 = runtime.ForwardResponseMessage ) diff --git a/proto/main_grpc.pb.go b/proto/main_grpc.pb.go index 62a923e..c3ae5df 100644 --- a/proto/main_grpc.pb.go +++ b/proto/main_grpc.pb.go @@ -20,81 +20,85 @@ import ( const _ = grpc.SupportPackageIsVersion9 const ( - EveningDetectiveServer_GetParticipation_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetParticipation" - EveningDetectiveServer_AnswerParticipation_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/AnswerParticipation" - EveningDetectiveServer_Ping_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/Ping" - EveningDetectiveServer_Echo_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/Echo" - EveningDetectiveServer_Signup_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/Signup" - EveningDetectiveServer_RefreshPassword_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/RefreshPassword" - EveningDetectiveServer_Login_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/Login" - EveningDetectiveServer_Refresh_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/Refresh" - EveningDetectiveServer_DeleteAccount_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/DeleteAccount" - EveningDetectiveServer_GetTerms_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetTerms" - EveningDetectiveServer_GetPrivacy_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetPrivacy" - EveningDetectiveServer_GetConsent_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetConsent" - EveningDetectiveServer_GetUsers_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetUsers" - EveningDetectiveServer_GetUserById_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetUserById" - EveningDetectiveServer_GetMe_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetMe" - EveningDetectiveServer_ChangeUserPassword_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/ChangeUserPassword" - EveningDetectiveServer_AddUserRole_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/AddUserRole" - EveningDetectiveServer_DeleteUserRole_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/DeleteUserRole" - EveningDetectiveServer_GetPermissions_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetPermissions" - EveningDetectiveServer_UploadFile_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/UploadFile" - EveningDetectiveServer_DownloadFile_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/DownloadFile" - EveningDetectiveServer_AddScenario_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/AddScenario" - EveningDetectiveServer_GetMyScenarios_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetMyScenarios" - EveningDetectiveServer_GetScenariosCatalog_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetScenariosCatalog" - EveningDetectiveServer_GetFullScenario_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetFullScenario" - EveningDetectiveServer_GetScenario_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetScenario" - EveningDetectiveServer_UpdateScenario_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/UpdateScenario" - EveningDetectiveServer_PublicScenario_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/PublicScenario" - EveningDetectiveServer_DraftScenario_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/DraftScenario" - EveningDetectiveServer_DeleteScenario_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/DeleteScenario" - EveningDetectiveServer_AddScenarioPlace_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/AddScenarioPlace" - EveningDetectiveServer_UpdateScenarioPlace_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/UpdateScenarioPlace" - EveningDetectiveServer_DeleteScenarioPlace_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/DeleteScenarioPlace" - EveningDetectiveServer_AddScenarioQuestion_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/AddScenarioQuestion" - EveningDetectiveServer_UpdateScenarioQuestion_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/UpdateScenarioQuestion" - EveningDetectiveServer_DeleteScenarioQuestion_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/DeleteScenarioQuestion" - EveningDetectiveServer_UpdateScenarioBackground_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/UpdateScenarioBackground" - EveningDetectiveServer_UpdateScenarioIntro_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/UpdateScenarioIntro" - EveningDetectiveServer_UpdateScenarioConclusion_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/UpdateScenarioConclusion" - EveningDetectiveServer_DownloadScenarioArchive_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/DownloadScenarioArchive" - EveningDetectiveServer_UploadScenarioArchive_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/UploadScenarioArchive" - EveningDetectiveServer_AddGame_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/AddGame" - EveningDetectiveServer_GetGames_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetGames" - EveningDetectiveServer_GetGame_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetGame" - EveningDetectiveServer_CreateScreenSession_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/CreateScreenSession" - EveningDetectiveServer_GetScreenState_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetScreenState" - EveningDetectiveServer_GetGameScreens_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetGameScreens" - EveningDetectiveServer_BindScreen_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/BindScreen" - EveningDetectiveServer_UnbindScreen_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/UnbindScreen" - EveningDetectiveServer_SetScreenSound_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/SetScreenSound" - EveningDetectiveServer_GetGameMap_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetGameMap" - EveningDetectiveServer_UpdateGameMapItem_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/UpdateGameMapItem" - EveningDetectiveServer_SetScreenMode_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/SetScreenMode" - EveningDetectiveServer_SendScreenCommand_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/SendScreenCommand" - EveningDetectiveServer_GetScreenResults_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetScreenResults" - EveningDetectiveServer_DownloadTeamQR_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/DownloadTeamQR" - EveningDetectiveServer_GetGameAnswers_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetGameAnswers" - EveningDetectiveServer_GetGameResults_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetGameResults" - EveningDetectiveServer_UpdateGame_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/UpdateGame" - EveningDetectiveServer_StartGame_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/StartGame" - EveningDetectiveServer_PauseGame_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/PauseGame" - EveningDetectiveServer_PlayGame_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/PlayGame" - EveningDetectiveServer_FinishGame_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/FinishGame" - EveningDetectiveServer_ResetGame_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/ResetGame" - EveningDetectiveServer_DeleteGame_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/DeleteGame" - EveningDetectiveServer_AddTeam_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/AddTeam" - EveningDetectiveServer_UpdateTeam_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/UpdateTeam" - EveningDetectiveServer_DeleteTeam_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/DeleteTeam" - EveningDetectiveServer_GiveTeamApplications_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GiveTeamApplications" - EveningDetectiveServer_GetTeamStory_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetTeamStory" - EveningDetectiveServer_AddTeamAction_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/AddTeamAction" - EveningDetectiveServer_DeleteLastTeamAction_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/DeleteLastTeamAction" - EveningDetectiveServer_GetTeamAnswers_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetTeamAnswers" - EveningDetectiveServer_SubmitTeamAnswers_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/SubmitTeamAnswers" - EveningDetectiveServer_SetTeamAnswerScore_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/SetTeamAnswerScore" + EveningDetectiveServer_GetParticipation_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetParticipation" + EveningDetectiveServer_AnswerParticipation_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/AnswerParticipation" + EveningDetectiveServer_Ping_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/Ping" + EveningDetectiveServer_Echo_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/Echo" + EveningDetectiveServer_Signup_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/Signup" + EveningDetectiveServer_RefreshPassword_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/RefreshPassword" + EveningDetectiveServer_Login_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/Login" + EveningDetectiveServer_Refresh_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/Refresh" + EveningDetectiveServer_DeleteAccount_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/DeleteAccount" + EveningDetectiveServer_GetTerms_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetTerms" + EveningDetectiveServer_GetPrivacy_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetPrivacy" + EveningDetectiveServer_GetConsent_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetConsent" + EveningDetectiveServer_GetUsers_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetUsers" + EveningDetectiveServer_GetUserById_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetUserById" + EveningDetectiveServer_GetMe_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetMe" + EveningDetectiveServer_ChangeUserPassword_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/ChangeUserPassword" + EveningDetectiveServer_AddUserRole_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/AddUserRole" + EveningDetectiveServer_DeleteUserRole_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/DeleteUserRole" + EveningDetectiveServer_GetPermissions_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetPermissions" + EveningDetectiveServer_UploadFile_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/UploadFile" + EveningDetectiveServer_DownloadFile_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/DownloadFile" + EveningDetectiveServer_AddScenario_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/AddScenario" + EveningDetectiveServer_GetMyScenarios_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetMyScenarios" + EveningDetectiveServer_GetScenariosCatalog_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetScenariosCatalog" + EveningDetectiveServer_GetFullScenario_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetFullScenario" + EveningDetectiveServer_GetScenario_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetScenario" + EveningDetectiveServer_UpdateScenario_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/UpdateScenario" + EveningDetectiveServer_PublicScenario_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/PublicScenario" + EveningDetectiveServer_DraftScenario_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/DraftScenario" + EveningDetectiveServer_DeleteScenario_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/DeleteScenario" + EveningDetectiveServer_AddScenarioPlace_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/AddScenarioPlace" + EveningDetectiveServer_UpdateScenarioPlace_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/UpdateScenarioPlace" + EveningDetectiveServer_DeleteScenarioPlace_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/DeleteScenarioPlace" + EveningDetectiveServer_AddScenarioQuestion_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/AddScenarioQuestion" + EveningDetectiveServer_UpdateScenarioQuestion_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/UpdateScenarioQuestion" + EveningDetectiveServer_DeleteScenarioQuestion_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/DeleteScenarioQuestion" + EveningDetectiveServer_UpdateScenarioBackground_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/UpdateScenarioBackground" + EveningDetectiveServer_UpdateScenarioIntro_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/UpdateScenarioIntro" + EveningDetectiveServer_UpdateScenarioConclusion_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/UpdateScenarioConclusion" + EveningDetectiveServer_DownloadScenarioArchive_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/DownloadScenarioArchive" + EveningDetectiveServer_UploadScenarioArchive_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/UploadScenarioArchive" + EveningDetectiveServer_AddGame_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/AddGame" + EveningDetectiveServer_GetGames_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetGames" + EveningDetectiveServer_GetGame_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetGame" + EveningDetectiveServer_CreateScreenSession_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/CreateScreenSession" + EveningDetectiveServer_GetScreenState_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetScreenState" + EveningDetectiveServer_GetGameScreens_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetGameScreens" + EveningDetectiveServer_BindScreen_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/BindScreen" + EveningDetectiveServer_UnbindScreen_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/UnbindScreen" + EveningDetectiveServer_SetScreenSound_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/SetScreenSound" + EveningDetectiveServer_GetGameMap_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetGameMap" + EveningDetectiveServer_UpdateGameMapItem_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/UpdateGameMapItem" + EveningDetectiveServer_SetScreenMode_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/SetScreenMode" + EveningDetectiveServer_SendScreenCommand_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/SendScreenCommand" + EveningDetectiveServer_GetScreenResults_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetScreenResults" + EveningDetectiveServer_DownloadTeamQR_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/DownloadTeamQR" + EveningDetectiveServer_GetGameAnswers_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetGameAnswers" + EveningDetectiveServer_GetGameResults_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetGameResults" + EveningDetectiveServer_CreateGameReview_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/CreateGameReview" + EveningDetectiveServer_GetGameReviews_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetGameReviews" + EveningDetectiveServer_GetGameReviewsForModeration_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetGameReviewsForModeration" + EveningDetectiveServer_ModerateGameReview_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/ModerateGameReview" + EveningDetectiveServer_UpdateGame_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/UpdateGame" + EveningDetectiveServer_StartGame_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/StartGame" + EveningDetectiveServer_PauseGame_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/PauseGame" + EveningDetectiveServer_PlayGame_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/PlayGame" + EveningDetectiveServer_FinishGame_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/FinishGame" + EveningDetectiveServer_ResetGame_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/ResetGame" + EveningDetectiveServer_DeleteGame_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/DeleteGame" + EveningDetectiveServer_AddTeam_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/AddTeam" + EveningDetectiveServer_UpdateTeam_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/UpdateTeam" + EveningDetectiveServer_DeleteTeam_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/DeleteTeam" + EveningDetectiveServer_GiveTeamApplications_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GiveTeamApplications" + EveningDetectiveServer_GetTeamStory_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetTeamStory" + EveningDetectiveServer_AddTeamAction_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/AddTeamAction" + EveningDetectiveServer_DeleteLastTeamAction_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/DeleteLastTeamAction" + EveningDetectiveServer_GetTeamAnswers_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetTeamAnswers" + EveningDetectiveServer_SubmitTeamAnswers_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/SubmitTeamAnswers" + EveningDetectiveServer_SetTeamAnswerScore_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/SetTeamAnswerScore" ) // EveningDetectiveServerClient is the client API for EveningDetectiveServer service. @@ -169,6 +173,10 @@ type EveningDetectiveServerClient interface { DownloadTeamQR(ctx context.Context, in *GetGameReq, opts ...grpc.CallOption) (*httpbody.HttpBody, error) GetGameAnswers(ctx context.Context, in *GetGameAnswersReq, opts ...grpc.CallOption) (*GetGameAnswersRsp, error) GetGameResults(ctx context.Context, in *GetGameResultsReq, opts ...grpc.CallOption) (*GetGameResultsRsp, error) + CreateGameReview(ctx context.Context, in *CreateGameReviewReq, opts ...grpc.CallOption) (*CreateGameReviewRsp, error) + GetGameReviews(ctx context.Context, in *GetGameReviewsReq, opts ...grpc.CallOption) (*GetGameReviewsRsp, error) + GetGameReviewsForModeration(ctx context.Context, in *GetGameReviewsReq, opts ...grpc.CallOption) (*GetGameReviewsRsp, error) + ModerateGameReview(ctx context.Context, in *ModerateGameReviewReq, opts ...grpc.CallOption) (*ModerateGameReviewRsp, error) UpdateGame(ctx context.Context, in *UpdateGameReq, opts ...grpc.CallOption) (*UpdateGameRsp, error) StartGame(ctx context.Context, in *StartGameReq, opts ...grpc.CallOption) (*StartGameRsp, error) PauseGame(ctx context.Context, in *PauseGameReq, opts ...grpc.CallOption) (*PauseGameRsp, error) @@ -776,6 +784,46 @@ func (c *eveningDetectiveServerClient) GetGameResults(ctx context.Context, in *G return out, nil } +func (c *eveningDetectiveServerClient) CreateGameReview(ctx context.Context, in *CreateGameReviewReq, opts ...grpc.CallOption) (*CreateGameReviewRsp, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(CreateGameReviewRsp) + err := c.cc.Invoke(ctx, EveningDetectiveServer_CreateGameReview_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *eveningDetectiveServerClient) GetGameReviews(ctx context.Context, in *GetGameReviewsReq, opts ...grpc.CallOption) (*GetGameReviewsRsp, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetGameReviewsRsp) + err := c.cc.Invoke(ctx, EveningDetectiveServer_GetGameReviews_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *eveningDetectiveServerClient) GetGameReviewsForModeration(ctx context.Context, in *GetGameReviewsReq, opts ...grpc.CallOption) (*GetGameReviewsRsp, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetGameReviewsRsp) + err := c.cc.Invoke(ctx, EveningDetectiveServer_GetGameReviewsForModeration_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *eveningDetectiveServerClient) ModerateGameReview(ctx context.Context, in *ModerateGameReviewReq, opts ...grpc.CallOption) (*ModerateGameReviewRsp, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ModerateGameReviewRsp) + err := c.cc.Invoke(ctx, EveningDetectiveServer_ModerateGameReview_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *eveningDetectiveServerClient) UpdateGame(ctx context.Context, in *UpdateGameReq, opts ...grpc.CallOption) (*UpdateGameRsp, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(UpdateGameRsp) @@ -1018,6 +1066,10 @@ type EveningDetectiveServerServer interface { DownloadTeamQR(context.Context, *GetGameReq) (*httpbody.HttpBody, error) GetGameAnswers(context.Context, *GetGameAnswersReq) (*GetGameAnswersRsp, error) GetGameResults(context.Context, *GetGameResultsReq) (*GetGameResultsRsp, error) + CreateGameReview(context.Context, *CreateGameReviewReq) (*CreateGameReviewRsp, error) + GetGameReviews(context.Context, *GetGameReviewsReq) (*GetGameReviewsRsp, error) + GetGameReviewsForModeration(context.Context, *GetGameReviewsReq) (*GetGameReviewsRsp, error) + ModerateGameReview(context.Context, *ModerateGameReviewReq) (*ModerateGameReviewRsp, error) UpdateGame(context.Context, *UpdateGameReq) (*UpdateGameRsp, error) StartGame(context.Context, *StartGameReq) (*StartGameRsp, error) PauseGame(context.Context, *PauseGameReq) (*PauseGameRsp, error) @@ -1219,6 +1271,18 @@ func (UnimplementedEveningDetectiveServerServer) GetGameAnswers(context.Context, func (UnimplementedEveningDetectiveServerServer) GetGameResults(context.Context, *GetGameResultsReq) (*GetGameResultsRsp, error) { return nil, status.Error(codes.Unimplemented, "method GetGameResults not implemented") } +func (UnimplementedEveningDetectiveServerServer) CreateGameReview(context.Context, *CreateGameReviewReq) (*CreateGameReviewRsp, error) { + return nil, status.Error(codes.Unimplemented, "method CreateGameReview not implemented") +} +func (UnimplementedEveningDetectiveServerServer) GetGameReviews(context.Context, *GetGameReviewsReq) (*GetGameReviewsRsp, error) { + return nil, status.Error(codes.Unimplemented, "method GetGameReviews not implemented") +} +func (UnimplementedEveningDetectiveServerServer) GetGameReviewsForModeration(context.Context, *GetGameReviewsReq) (*GetGameReviewsRsp, error) { + return nil, status.Error(codes.Unimplemented, "method GetGameReviewsForModeration not implemented") +} +func (UnimplementedEveningDetectiveServerServer) ModerateGameReview(context.Context, *ModerateGameReviewReq) (*ModerateGameReviewRsp, error) { + return nil, status.Error(codes.Unimplemented, "method ModerateGameReview not implemented") +} func (UnimplementedEveningDetectiveServerServer) UpdateGame(context.Context, *UpdateGameReq) (*UpdateGameRsp, error) { return nil, status.Error(codes.Unimplemented, "method UpdateGame not implemented") } @@ -2336,6 +2400,78 @@ func _EveningDetectiveServer_GetGameResults_Handler(srv interface{}, ctx context return interceptor(ctx, in, info, handler) } +func _EveningDetectiveServer_CreateGameReview_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateGameReviewReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EveningDetectiveServerServer).CreateGameReview(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: EveningDetectiveServer_CreateGameReview_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EveningDetectiveServerServer).CreateGameReview(ctx, req.(*CreateGameReviewReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _EveningDetectiveServer_GetGameReviews_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetGameReviewsReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EveningDetectiveServerServer).GetGameReviews(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: EveningDetectiveServer_GetGameReviews_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EveningDetectiveServerServer).GetGameReviews(ctx, req.(*GetGameReviewsReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _EveningDetectiveServer_GetGameReviewsForModeration_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetGameReviewsReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EveningDetectiveServerServer).GetGameReviewsForModeration(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: EveningDetectiveServer_GetGameReviewsForModeration_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EveningDetectiveServerServer).GetGameReviewsForModeration(ctx, req.(*GetGameReviewsReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _EveningDetectiveServer_ModerateGameReview_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ModerateGameReviewReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EveningDetectiveServerServer).ModerateGameReview(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: EveningDetectiveServer_ModerateGameReview_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EveningDetectiveServerServer).ModerateGameReview(ctx, req.(*ModerateGameReviewReq)) + } + return interceptor(ctx, in, info, handler) +} + func _EveningDetectiveServer_UpdateGame_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(UpdateGameReq) if err := dec(in); err != nil { @@ -2881,6 +3017,22 @@ var EveningDetectiveServer_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetGameResults", Handler: _EveningDetectiveServer_GetGameResults_Handler, }, + { + MethodName: "CreateGameReview", + Handler: _EveningDetectiveServer_CreateGameReview_Handler, + }, + { + MethodName: "GetGameReviews", + Handler: _EveningDetectiveServer_GetGameReviews_Handler, + }, + { + MethodName: "GetGameReviewsForModeration", + Handler: _EveningDetectiveServer_GetGameReviewsForModeration_Handler, + }, + { + MethodName: "ModerateGameReview", + Handler: _EveningDetectiveServer_ModerateGameReview_Handler, + }, { MethodName: "UpdateGame", Handler: _EveningDetectiveServer_UpdateGame_Handler,