From 857cd10580eb531788baf6fb99b1b17366f4ef94 Mon Sep 17 00:00:00 2001 From: Superkooka Date: Sat, 20 Dec 2025 21:13:20 +0100 Subject: [PATCH] feat: create tables --- .gitignore | 2 + composer.json | 5 +- docker/php-fpm/Dockerfile | 1 + migrations/Version20251220194258.php | 227 ++++++++++++++++++++++ stubs/Version20251220194258/leagues.csv | 2 + stubs/Version20251220194258/providers.csv | 3 + stubs/Version20251220194258/seasons.csv | 4 + stubs/Version20251220194258/teams.csv | 33 ++++ stubs/utils.php | 18 ++ 9 files changed, 294 insertions(+), 1 deletion(-) create mode 100644 migrations/Version20251220194258.php create mode 100644 stubs/Version20251220194258/leagues.csv create mode 100644 stubs/Version20251220194258/providers.csv create mode 100644 stubs/Version20251220194258/seasons.csv create mode 100644 stubs/Version20251220194258/teams.csv create mode 100644 stubs/utils.php diff --git a/.gitignore b/.gitignore index 994747b..0667816 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ +.idea +.vscode ###> symfony/framework-bundle ### /.env diff --git a/composer.json b/composer.json index c0c1dd6..9948d91 100644 --- a/composer.json +++ b/composer.json @@ -38,7 +38,10 @@ "autoload": { "psr-4": { "App\\": "src/" - } + }, + "files": [ + "stubs/utils.php" + ] }, "autoload-dev": { "psr-4": { diff --git a/docker/php-fpm/Dockerfile b/docker/php-fpm/Dockerfile index fcea3be..8faf454 100644 --- a/docker/php-fpm/Dockerfile +++ b/docker/php-fpm/Dockerfile @@ -80,6 +80,7 @@ COPY bin /var/www/bin COPY migrations /var/www/migrations COPY config /var/www/config COPY public /var/www/public +COPY stubs /var/www/stubs COPY .env.example /var/www/.env diff --git a/migrations/Version20251220194258.php b/migrations/Version20251220194258.php new file mode 100644 index 0000000..d4872ab --- /dev/null +++ b/migrations/Version20251220194258.php @@ -0,0 +1,227 @@ +addSql(<<addSql(<<addSql(<<addSql(<<addSql(<<addSql(<<addSql(<<addSql(<<addSql(<<addSql(<<addSql(<<addSql(<<addSql(<<loadBootstrapData(); + } + + public function down(Schema $schema): void + { + $this->addSql(/** @lang SQL */ "DROP TABLE IF EXISTS game"); + $this->addSql(/** @lang SQL */ "DROP TABLE IF EXISTS season"); + $this->addSql(/** @lang SQL */ "DROP TABLE IF EXISTS league"); + $this->addSql(/** @lang SQL */ "DROP TABLE IF EXISTS team"); + $this->addSql(/** @lang SQL */ "DROP TABLE IF EXISTS provider"); + } + + private function loadBootstrapData(): void + { + $values = []; + $params = []; + foreach (getCSV(__DIR__.'/../stubs/Version20251220194258/providers.csv') as $row) { + $values[] = "(?, ?)"; + $params[] = $row['id']; + $params[] = $row['name']; + } + + $this->addSql( + 'INSERT INTO "provider" ("id", "name") VALUES ' + . implode(', ', $values) + . ' ON CONFLICT ("id") DO NOTHING', + $params + ); + + $values = []; + $params = []; + foreach (getCSV(__DIR__.'/../stubs/Version20251220194258/leagues.csv') as $row) { + $values[] = "(?, ?, ?, ?)"; + $params[] = $row['id']; + $params[] = $row['provider_id']; + $params[] = $row['provider_league_id']; + $params[] = $row['name']; + } + + $this->addSql( + 'INSERT INTO "league" ("id", "provider_id", "provider_league_id", "name") VALUES ' + . implode(', ', $values) + . ' ON CONFLICT ("id") DO NOTHING', + $params + ); + + $values = []; + $params = []; + foreach (getCSV(__DIR__.'/../stubs/Version20251220194258/seasons.csv') as $row) { + $values[] = "(?, ?, ?, ?, ?, ?)"; + $params[] = $row['id']; + $params[] = $row['provider_id']; + $params[] = $row['provider_season_id']; + $params[] = $row['year']; + $params[] = $row['kind']; + $params[] = $row['league_id']; + } + + $this->addSql( + 'INSERT INTO "season" ("id", "provider_id", "provider_season_id", "year", "kind", "league_id") VALUES ' + . implode(', ', $values) + . ' ON CONFLICT ("id") DO NOTHING', + $params + ); + + $values = []; + $params = []; + foreach (getCSV(__DIR__.'/../stubs/Version20251220194258/teams.csv') as $row) { + $values[] = "(?, ?, ?, ?, ?, ?)"; + $params[] = $row['id']; + $params[] = $row['provider_id']; + $params[] = $row['provider_team_id']; + $params[] = $row['name']; + $params[] = $row['alias']; + $params[] = $row['active']; + } + + $this->addSql( + 'INSERT INTO "team" ("id", "provider_id", "provider_team_id", "name", "alias", "active") VALUES ' + . implode(', ', $values) + . ' ON CONFLICT ("id") DO NOTHING', + $params + ); + } +} diff --git a/stubs/Version20251220194258/leagues.csv b/stubs/Version20251220194258/leagues.csv new file mode 100644 index 0000000..21889e4 --- /dev/null +++ b/stubs/Version20251220194258/leagues.csv @@ -0,0 +1,2 @@ +id,provider_id,provider_league_id,name +c2ac5513-302a-4c60-a052-a8f871fa24e5,885fe581-c4c3-45e7-a06c-29ece7d47fad,fd560107-a85b-4388-ab0d-655ad022aff7,NHL diff --git a/stubs/Version20251220194258/providers.csv b/stubs/Version20251220194258/providers.csv new file mode 100644 index 0000000..0310013 --- /dev/null +++ b/stubs/Version20251220194258/providers.csv @@ -0,0 +1,3 @@ +id,name +885fe581-c4c3-45e7-a06c-29ece7d47fad,SportRadar +c7fd0cf5-5418-41b3-9930-34f41eb09a82,Liquipedia \ No newline at end of file diff --git a/stubs/Version20251220194258/seasons.csv b/stubs/Version20251220194258/seasons.csv new file mode 100644 index 0000000..795357d --- /dev/null +++ b/stubs/Version20251220194258/seasons.csv @@ -0,0 +1,4 @@ +id,provider_id,provider_season_id,year,kind,league_id +15c834cb-1f4f-4403-8314-6ee313938668,885fe581-c4c3-45e7-a06c-29ece7d47fad,4383ec83-6112-47f0-867a-8839145e1d58,2025,PRE,c2ac5513-302a-4c60-a052-a8f871fa24e5 +85cadf04-3022-4d0c-80b8-ab05f0b7ed52,885fe581-c4c3-45e7-a06c-29ece7d47fad,4a67cca6-b450-45f9-91c6-48e92ac19069,2025,REG,c2ac5513-302a-4c60-a052-a8f871fa24e5 +bdec6e19-ab61-4d2c-b529-cfef716fa4bd,885fe581-c4c3-45e7-a06c-29ece7d47fad,3c1bb21f-6523-4115-87ee-c8c16ed80421,2025,PST,c2ac5513-302a-4c60-a052-a8f871fa24e5 \ No newline at end of file diff --git a/stubs/Version20251220194258/teams.csv b/stubs/Version20251220194258/teams.csv new file mode 100644 index 0000000..041b9cc --- /dev/null +++ b/stubs/Version20251220194258/teams.csv @@ -0,0 +1,33 @@ +id,provider_id,provider_team_id,name,alias,active +897b3f25-405e-425b-9d7e-9944e44dd65f,885fe581-c4c3-45e7-a06c-29ece7d47fad,4415ce44-0f24-11e2-8525-18a905767e44,Colorado Avalanche,COL,1 +13b05ad3-35c1-4ace-9f95-a8bf81d8da3c,885fe581-c4c3-45e7-a06c-29ece7d47fad,4416272f-0f24-11e2-8525-18a905767e44,Chicago Blackhawks,CHI,1 +3369e748-7bd6-4e91-b1aa-e8ae617d10dd,885fe581-c4c3-45e7-a06c-29ece7d47fad,44167db4-0f24-11e2-8525-18a905767e44,Colombus Blue Jackets,CBJ,1 +eab40eb6-7928-45ad-8eed-103d1410e0e5,885fe581-c4c3-45e7-a06c-29ece7d47fad,441660ea-0f24-11e2-8525-18a905767e44,St. Louis Blues,STL,1 +e08686af-7660-45f3-96b0-195bf4f94432,885fe581-c4c3-45e7-a06c-29ece7d47fad,4416ba1a-0f24-11e2-8525-18a905767e44,Boston Bruins,BOS,1 +856cc963-ac7d-42ef-8b2f-7ecabd427cf6,885fe581-c4c3-45e7-a06c-29ece7d47fad,441713b7-0f24-11e2-8525-18a905767e44,Montreal Canadiens,MTL,1 +1452d761-56a9-4802-bc8e-b60b2889b53e,885fe581-c4c3-45e7-a06c-29ece7d47fad,4415b0a7-0f24-11e2-8525-18a905767e44,Vancouver Canucks,VAN,1 +d0f07a23-5b24-47af-95c1-59e741dd25c3,885fe581-c4c3-45e7-a06c-29ece7d47fad,4417eede-0f24-11e2-8525-18a905767e44,Washington Capitals,WSH,1 +42b507fc-3550-45f7-8df9-6590d4ad7cee,885fe581-c4c3-45e7-a06c-29ece7d47fad,44174b0c-0f24-11e2-8525-18a905767e44,New Jersey Devils,NJ,1 +7316c79a-26cf-4b7d-a0d8-54c17a905523,885fe581-c4c3-45e7-a06c-29ece7d47fad,441862de-0f24-11e2-8525-18a905767e44,Anaheim Ducks,ANA,1 +76005657-a34e-412b-905b-ed45aff9f42a,885fe581-c4c3-45e7-a06c-29ece7d47fad,44159241-0f24-11e2-8525-18a905767e44,Calgary Flames,CGY,1 +46d94319-767e-44f3-8eb3-c3fc8c3e4cdb,885fe581-c4c3-45e7-a06c-29ece7d47fad,44179d47-0f24-11e2-8525-18a905767e44,Philadelphia Flyers,PHI,1 +4d418987-0073-478c-9c83-4da0fd469f78,885fe581-c4c3-45e7-a06c-29ece7d47fad,42376e1c-6da8-461e-9443-cfcf0a9fcc4d,Vegas Golden Knights,VGK,1 +e086d6f6-b5c9-4ace-ad09-5d257244a954,885fe581-c4c3-45e7-a06c-29ece7d47fad,44182a9d-0f24-11e2-8525-18a905767e44,Carolina Hurricanes,CAR,1 +68b8839f-6e60-4578-a38f-f080a41dd26c,885fe581-c4c3-45e7-a06c-29ece7d47fad,441766b9-0f24-11e2-8525-18a905767e44,New York Islanders,NYI,1 +5b1dfbb4-a561-4bbf-a155-9f715eacafbc,885fe581-c4c3-45e7-a06c-29ece7d47fad,44180e55-0f24-11e2-8525-18a905767e44,Winnipeg Jets,WPG,1 +cd5abd08-1c82-4f21-a70d-f72d36086b8b,885fe581-c4c3-45e7-a06c-29ece7d47fad,44151f7a-0f24-11e2-8525-18a905767e44,Los Angeles Kings,LA,1 +ca9cbe53-7459-4394-9e5c-0613bda54872,885fe581-c4c3-45e7-a06c-29ece7d47fad,1fb48e65-9688-4084-8868-02173525c3e1,Seattle Kraken,SEA,1 +4087cf79-b130-434f-b0cb-efe0b9336cad,885fe581-c4c3-45e7-a06c-29ece7d47fad,4417d3cb-0f24-11e2-8525-18a905767e44,Tampa Bay Lightning,TB,1 +2ff3c84d-f5ea-4024-aa78-be7290ab59c8,885fe581-c4c3-45e7-a06c-29ece7d47fad,715a1dba-4e9f-4158-8346-3473b6e3557f,Utah Mammoth,UTA,1 +7b132dd4-8474-400b-a146-243c513c8f01,885fe581-c4c3-45e7-a06c-29ece7d47fad,441730a9-0f24-11e2-8525-18a905767e44,Toronto Maple Leafs,TOR,1 +3dced743-221a-4805-8a90-49f0e752e049,885fe581-c4c3-45e7-a06c-29ece7d47fad,4415ea6c-0f24-11e2-8525-18a905767e44,Edmonton Oilers,EDM,1 +8c1f3644-997a-46d0-9e17-206b6a0210cb,885fe581-c4c3-45e7-a06c-29ece7d47fad,4418464d-0f24-11e2-8525-18a905767e44,Florida Panthers,FLA,1 +7d42bbe2-bc4b-407a-a580-6882b51de839,885fe581-c4c3-45e7-a06c-29ece7d47fad,4417b7d7-0f24-11e2-8525-18a905767e44,Pittsburgh Penguins,PIT,1 +ef116944-0602-42c5-b8a6-c420bbde87c6,885fe581-c4c3-45e7-a06c-29ece7d47fad,441643b7-0f24-11e2-8525-18a905767e44,Nashville Predators,NSH,1 +dfa5ee11-2518-46b2-bf3f-300398f8ca73,885fe581-c4c3-45e7-a06c-29ece7d47fad,441781b9-0f24-11e2-8525-18a905767e44,New York Rangers,NYR,1 +9caba47c-529b-4ca5-82c6-d828a3dbb308,885fe581-c4c3-45e7-a06c-29ece7d47fad,44169bb9-0f24-11e2-8525-18a905767e44,Detroit Red Wings,DET,1 +e584619f-fb08-409e-b202-41889b553d7f,885fe581-c4c3-45e7-a06c-29ece7d47fad,4416d559-0f24-11e2-8525-18a905767e44,Buffalo Sabres,BUF,1 +d031ffba-9114-4745-b415-015a1feac1cc,885fe581-c4c3-45e7-a06c-29ece7d47fad,4416f5e2-0f24-11e2-8525-18a905767e44,Ottawa Senators,OTT,1 +3f83b808-343d-473d-9fe0-14e6f23dca65,885fe581-c4c3-45e7-a06c-29ece7d47fad,44155909-0f24-11e2-8525-18a905767e44,San Jose Sharks,SJ,1 +5568327b-fee4-40ee-a12c-0637840ef825,885fe581-c4c3-45e7-a06c-29ece7d47fad,44157522-0f24-11e2-8525-18a905767e44,Dallas Stars,DAL,1 +3cf51bb1-2d58-4a38-b691-670fd36f4ca8,885fe581-c4c3-45e7-a06c-29ece7d47fad,4416091c-0f24-11e2-8525-18a905767e44,Minnesota Wild,MIN,1 \ No newline at end of file diff --git a/stubs/utils.php b/stubs/utils.php new file mode 100644 index 0000000..89706de --- /dev/null +++ b/stubs/utils.php @@ -0,0 +1,18 @@ +