sendou.ink/migrations/012-to-tools.js
Kalle ecd5a2a2f7
TO Tools (#1077)
* Add DB tables

* Toggle TO Tools in new calendar event page

* TO tools page initial

* Add counter pick map pool UI

* Save tie breaker map pool

* Save team name

* Layout initial

* Load users own team

* Make team name input required

* Rename team

* Divide to sections

* Submit team map pool

* New style for counter pick map pool section expand

* Fix tiebreaker map pool not saved when new event made

* Split to many forms

* According for team name

* Small UI consistency tweaks

* Add explanation to tie breaker maps

* Remove redundant prop

* Fix new calendar event todos

* Use required hidden input component in new build page

* Fix to tools page showing even when toToolsEnabled = 0

* Delete team

* Map list generation tests initial

* Add tournament map list generation tests

* First version of map list generation

* Add seeded RNG

* Rearrange files

* Generation with strats initial

* Default map pool + allow one team not to have any maps

* Implement map generation via backtracking

* Make order of stages irrelevant

* Add one more TODO

* Seed

* Fixes

* Tournament map list generator initial

* More functional maplist

* Fix any

* Persist in search params initial

* Add date to calendar seed

* Revert "Persist in search params initial"

This reverts commit f01a9e6982.

* Allow admin to start tournament

* Rate maplist instead of optimal / suboptimal

* Add fallback if map list generation errors out

* Hide TO Tools if not admin

* Submit team roster and delete members

* Teams page

* Give roster s p a c e

* Clear user combobox on sent + layout tweaks

* Gracefully handle updating after tournament has started

* Add title

* Persist map list in search params

* Add i18n
2022-11-13 14:41:13 +02:00

78 lines
2.8 KiB
JavaScript

module.exports.up = function (db) {
db.prepare(`alter table "CalendarEvent" add "customUrl" text`).run();
db.prepare(
`alter table "CalendarEvent" add "toToolsEnabled" integer default 0`
).run();
db.prepare(
`alter table "CalendarEvent" add "isBeforeStart" integer default 1`
).run();
db.prepare(
`create unique index calendar_event_custom_url_unique on "CalendarEvent"("customUrl")`
).run();
// TODO: these should be FK's
db.prepare(`alter table "MapPoolMap" add "tournamentTeamId" integer`).run();
db.prepare(
`alter table "MapPoolMap" add "tieBreakerCalendarEventId" integer`
).run();
db.prepare(
`create index map_pool_map_tournament_team_id on "MapPoolMap"("tournamentTeamId")`
).run();
db.prepare(
`create index map_pool_map_tie_breaker_calendar_event_id on "MapPoolMap"("tieBreakerCalendarEventId")`
).run();
db.prepare(
`
create table "TournamentTeam" (
"id" integer primary key,
"name" text not null,
"createdAt" integer not null,
"seed" integer,
"calendarEventId" integer not null,
foreign key ("calendarEventId") references "CalendarEvent"("id") on delete cascade,
unique("calendarEventId", "name") on conflict rollback
) strict
`
).run();
db.prepare(
`create index tournament_team_calendar_event_id on "TournamentTeam"("calendarEventId")`
).run();
db.prepare(
`
create table "TournamentTeamMember" (
"tournamentTeamId" integer not null,
"userId" integer not null,
"isOwner" integer not null,
"createdAt" integer not null,
foreign key ("tournamentTeamId") references "TournamentTeam"("id") on delete cascade,
unique("tournamentTeamId", "userId") on conflict rollback
) strict
`
).run();
db.prepare(
`create index tournament_team_member_tournament_team_id on "TournamentTeamMember"("tournamentTeamId")`
).run();
};
module.exports.down = function (db) {
db.prepare(`drop index calendar_event_custom_url_unique`).run();
db.prepare(`drop index map_pool_map_tournament_team_id`).run();
db.prepare(`drop index map_pool_map_tie_breaker_calendar_event_id`).run();
db.prepare(`alter table "CalendarEvent" drop column "customUrl"`).run();
db.prepare(`alter table "CalendarEvent" drop column "toToolsEnabled"`).run();
db.prepare(`alter table "CalendarEvent" drop column "isBeforeStart"`).run();
db.prepare(`alter table "MapPoolMap" drop column "tournamentTeamId"`).run();
db.prepare(
`alter table "MapPoolMap" drop column "tieBreakerCalendarEventId"`
).run();
db.prepare(`drop index tournament_team_calendar_event_id`).run();
db.prepare(`drop index tournament_team_member_tournament_team_id`).run();
db.prepare(`drop table "TournamentTeam"`).run();
db.prepare(`drop table "TournamentTeamMember"`).run();
};