add reviews

This commit is contained in:
2026-09-18 01:37:48 +07:00
parent 6c8f1fb9e1
commit e9e35c60d5
15 changed files with 2278 additions and 551 deletions
+89
View File
@@ -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;
Binary file not shown.
+8
View File
@@ -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,
@@ -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": {
+65
View File
@@ -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
}
+4
View File
@@ -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,
+111
View File
@@ -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
}
@@ -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
}
@@ -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 := "<p class=\"email-text\"><strong>Как вам игра?</strong></p><p class=\"email-text\">Команда «" + html.EscapeString(job.TeamName) + "» — «" + html.EscapeString(job.GameName) + "»</p>"
content += email_sender.ButtonHTML(link, "Оставить отзыв")
content += "<p class=\"email-text\">Оценка и отзыв займут пару минут. Отзыв можно оставить один раз от команды.</p>"
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()
}
@@ -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, "Ночь &amp; тайна") {
t.Fatalf("game name is not escaped in HTML: %s", message.HTML)
}
}
@@ -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;
@@ -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;
+834 -326
View File
File diff suppressed because it is too large Load Diff
+474 -150
View File
@@ -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
)
+227 -75
View File
@@ -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,