aboutsummaryrefslogtreecommitdiffhomepage
path: root/openapi/api-server.yaml
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-02-18 22:38:15 +0900
committernsfisis <nsfisis@gmail.com>2026-02-18 22:38:15 +0900
commit9f9efc2bc07810d2e06b37bad94e5922681eadef (patch)
tree79bcce2bf065a7ea282aa7855822c3bdee92ee7c /openapi/api-server.yaml
parentc095200dc79f24c0cd17a2e3ba15c85a2971ea9a (diff)
downloadphperkaigi-2026-albatross-9f9efc2bc07810d2e06b37bad94e5922681eadef.tar.gz
phperkaigi-2026-albatross-9f9efc2bc07810d2e06b37bad94e5922681eadef.tar.zst
phperkaigi-2026-albatross-9f9efc2bc07810d2e06b37bad94e5922681eadef.zip
feat: refactor tournament to generic DB-backed N-person bracket
Replace hardcoded 6-person tournament with a generic single-elimination bracket system backed by new DB tables (tournaments, tournament_entries, tournament_matches). Includes admin CRUD, standard seeding algorithm, bye handling, and a CSS Grid bracket renderer on the frontend. Add comprehensive tests for backend API/admin handlers, seeding logic, and frontend bracket component. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Diffstat (limited to 'openapi/api-server.yaml')
-rw-r--r--openapi/api-server.yaml73
1 files changed, 43 insertions, 30 deletions
diff --git a/openapi/api-server.yaml b/openapi/api-server.yaml
index 21fb989..ed535d3 100644
--- a/openapi/api-server.yaml
+++ b/openapi/api-server.yaml
@@ -347,40 +347,15 @@ paths:
application/json:
schema:
$ref: '#/components/schemas/Error'
- /tournament:
+ /tournaments/{tournament_id}:
get:
operationId: getTournament
parameters:
- - name: game1
- in: query
- required: true
- schema:
- type: integer
- explode: false
- - name: game2
- in: query
- required: true
- schema:
- type: integer
- explode: false
- - name: game3
- in: query
- required: true
- schema:
- type: integer
- explode: false
- - name: game4
- in: query
- required: true
- schema:
- type: integer
- explode: false
- - name: game5
- in: query
+ - name: tournament_id
+ in: path
required: true
schema:
type: integer
- explode: false
responses:
'200':
description: The request has succeeded.
@@ -530,17 +505,53 @@ components:
Tournament:
type: object
required:
+ - tournament_id
+ - display_name
+ - bracket_size
+ - num_rounds
+ - entries
- matches
properties:
+ tournament_id:
+ type: integer
+ display_name:
+ type: string
+ bracket_size:
+ type: integer
+ num_rounds:
+ type: integer
+ entries:
+ type: array
+ items:
+ $ref: '#/components/schemas/TournamentEntry'
matches:
type: array
items:
$ref: '#/components/schemas/TournamentMatch'
+ TournamentEntry:
+ type: object
+ required:
+ - user
+ - seed
+ properties:
+ user:
+ $ref: '#/components/schemas/User'
+ seed:
+ type: integer
TournamentMatch:
type: object
required:
- - game_id
+ - tournament_match_id
+ - round
+ - position
+ - is_bye
properties:
+ tournament_match_id:
+ type: integer
+ round:
+ type: integer
+ position:
+ type: integer
game_id:
type: integer
player1:
@@ -551,8 +562,10 @@ components:
type: integer
player2_score:
type: integer
- winner:
+ winner_user_id:
type: integer
+ is_bye:
+ type: boolean
User:
type: object
required: