feat: create tables

This commit is contained in:
Aymeric GUERACAGUE 2025-12-20 21:13:20 +01:00
parent 645dc352da
commit 857cd10580
Signed by: Superkooka
GPG Key ID: F78F2B172E894865
9 changed files with 294 additions and 1 deletions

2
.gitignore vendored
View File

@ -1,3 +1,5 @@
.idea
.vscode
###> symfony/framework-bundle ### ###> symfony/framework-bundle ###
/.env /.env

View File

@ -38,7 +38,10 @@
"autoload": { "autoload": {
"psr-4": { "psr-4": {
"App\\": "src/" "App\\": "src/"
} },
"files": [
"stubs/utils.php"
]
}, },
"autoload-dev": { "autoload-dev": {
"psr-4": { "psr-4": {

View File

@ -80,6 +80,7 @@ COPY bin /var/www/bin
COPY migrations /var/www/migrations COPY migrations /var/www/migrations
COPY config /var/www/config COPY config /var/www/config
COPY public /var/www/public COPY public /var/www/public
COPY stubs /var/www/stubs
COPY .env.example /var/www/.env COPY .env.example /var/www/.env

View File

@ -0,0 +1,227 @@
<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
use function App\Stubs\getCSV; # should be copied here
final class Version20251220194258 extends AbstractMigration
{
public function getDescription(): string
{
return 'Create basic tables';
}
public function up(Schema $schema): void
{
$this->addSql(<<<SQL
CREATE TABLE "provider"(
"id" UUID NOT NULL PRIMARY KEY,
"name" VARCHAR(255) NOT NULL
);
SQL);
$this->addSql(<<<SQL
CREATE TABLE "league"(
"id" UUID NOT NULL PRIMARY KEY,
"provider_id" UUID NOT NULL,
"provider_league_id" VARCHAR(255) NOT NULL,
"name" VARCHAR(255) NOT NULL,
CONSTRAINT "fk_league_provider"
FOREIGN KEY ("provider_id")
REFERENCES "provider" ("id")
);
SQL);
$this->addSql(<<<SQL
CREATE INDEX "idx_league_provider_id"
ON "league" ("provider_id");
SQL);
$this->addSql(<<<SQL
CREATE TABLE "season"(
"id" UUID NOT NULL PRIMARY KEY,
"provider_id" UUID NOT NULL,
"provider_season_id" VARCHAR(255) NOT NULL,
"year" INT NOT NULL,
"kind" VARCHAR(255) NOT NULL,
"league_id" UUID NOT NULL,
CONSTRAINT "fk_season_provider"
FOREIGN KEY ("provider_id")
REFERENCES "provider" ("id"),
CONSTRAINT "fk_season_league"
FOREIGN KEY ("league_id")
REFERENCES "league" ("id")
);
SQL);
$this->addSql(<<<SQL
CREATE INDEX "idx_season_provider_id"
ON "season" ("provider_id");
SQL);
$this->addSql(<<<SQL
CREATE INDEX "idx_season_league_id"
ON "season" ("league_id");
SQL);
$this->addSql(<<<SQL
CREATE TABLE "team"(
"id" UUID NOT NULL PRIMARY KEY,
"provider_id" UUID NOT NULL,
"provider_team_id" VARCHAR(255) NOT NULL,
"name" VARCHAR(255) NOT NULL,
"alias" VARCHAR(255) NOT NULL,
"active" BOOLEAN NOT NULL DEFAULT TRUE,
CONSTRAINT "fk_team_provider"
FOREIGN KEY ("provider_id")
REFERENCES "provider" ("id")
);
SQL);
$this->addSql(<<<SQL
CREATE INDEX "idx_team_provider_id"
ON "team" ("provider_id");
SQL);
$this->addSql(<<<SQL
CREATE TABLE "game"(
"id" UUID NOT NULL PRIMARY KEY,
"provider_id" UUID NOT NULL,
"provider_game_id" VARCHAR(255) NOT NULL,
"start_time_scheduled" TIMESTAMPTZ NOT NULL,
"end_time_scheduled" TIMESTAMPTZ,
"season_id" UUID NOT NULL,
"home_team_id" UUID NOT NULL,
"away_team_id" UUID NOT NULL,
"venue" VARCHAR(255) NOT NULL,
CONSTRAINT "fk_game_provider"
FOREIGN KEY ("provider_id")
REFERENCES "provider" ("id"),
CONSTRAINT "fk_game_season"
FOREIGN KEY ("season_id")
REFERENCES "season" ("id"),
CONSTRAINT "fk_game_home_team"
FOREIGN KEY ("home_team_id")
REFERENCES "team" ("id"),
CONSTRAINT "fk_game_away_team"
FOREIGN KEY ("away_team_id")
REFERENCES "team" ("id")
);
SQL);
$this->addSql(<<<SQL
CREATE INDEX "idx_game_provider_id"
ON "game" ("provider_id");
SQL);
$this->addSql(<<<SQL
CREATE INDEX "idx_game_season_id"
ON "game" ("season_id");
SQL);
$this->addSql(<<<SQL
CREATE INDEX "idx_game_home_team_id"
ON "game" ("home_team_id");
SQL);
$this->addSql(<<<SQL
CREATE INDEX "idx_game_away_team_id"
ON "game" ("away_team_id");
SQL);
$this->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
);
}
}

View File

@ -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
1 id provider_id provider_league_id name
2 c2ac5513-302a-4c60-a052-a8f871fa24e5 885fe581-c4c3-45e7-a06c-29ece7d47fad fd560107-a85b-4388-ab0d-655ad022aff7 NHL

View File

@ -0,0 +1,3 @@
id,name
885fe581-c4c3-45e7-a06c-29ece7d47fad,SportRadar
c7fd0cf5-5418-41b3-9930-34f41eb09a82,Liquipedia
1 id name
2 885fe581-c4c3-45e7-a06c-29ece7d47fad SportRadar
3 c7fd0cf5-5418-41b3-9930-34f41eb09a82 Liquipedia

View File

@ -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
1 id provider_id provider_season_id year kind league_id
2 15c834cb-1f4f-4403-8314-6ee313938668 885fe581-c4c3-45e7-a06c-29ece7d47fad 4383ec83-6112-47f0-867a-8839145e1d58 2025 PRE c2ac5513-302a-4c60-a052-a8f871fa24e5
3 85cadf04-3022-4d0c-80b8-ab05f0b7ed52 885fe581-c4c3-45e7-a06c-29ece7d47fad 4a67cca6-b450-45f9-91c6-48e92ac19069 2025 REG c2ac5513-302a-4c60-a052-a8f871fa24e5
4 bdec6e19-ab61-4d2c-b529-cfef716fa4bd 885fe581-c4c3-45e7-a06c-29ece7d47fad 3c1bb21f-6523-4115-87ee-c8c16ed80421 2025 PST c2ac5513-302a-4c60-a052-a8f871fa24e5

View File

@ -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
1 id provider_id provider_team_id name alias active
2 897b3f25-405e-425b-9d7e-9944e44dd65f 885fe581-c4c3-45e7-a06c-29ece7d47fad 4415ce44-0f24-11e2-8525-18a905767e44 Colorado Avalanche COL 1
3 13b05ad3-35c1-4ace-9f95-a8bf81d8da3c 885fe581-c4c3-45e7-a06c-29ece7d47fad 4416272f-0f24-11e2-8525-18a905767e44 Chicago Blackhawks CHI 1
4 3369e748-7bd6-4e91-b1aa-e8ae617d10dd 885fe581-c4c3-45e7-a06c-29ece7d47fad 44167db4-0f24-11e2-8525-18a905767e44 Colombus Blue Jackets CBJ 1
5 eab40eb6-7928-45ad-8eed-103d1410e0e5 885fe581-c4c3-45e7-a06c-29ece7d47fad 441660ea-0f24-11e2-8525-18a905767e44 St. Louis Blues STL 1
6 e08686af-7660-45f3-96b0-195bf4f94432 885fe581-c4c3-45e7-a06c-29ece7d47fad 4416ba1a-0f24-11e2-8525-18a905767e44 Boston Bruins BOS 1
7 856cc963-ac7d-42ef-8b2f-7ecabd427cf6 885fe581-c4c3-45e7-a06c-29ece7d47fad 441713b7-0f24-11e2-8525-18a905767e44 Montreal Canadiens MTL 1
8 1452d761-56a9-4802-bc8e-b60b2889b53e 885fe581-c4c3-45e7-a06c-29ece7d47fad 4415b0a7-0f24-11e2-8525-18a905767e44 Vancouver Canucks VAN 1
9 d0f07a23-5b24-47af-95c1-59e741dd25c3 885fe581-c4c3-45e7-a06c-29ece7d47fad 4417eede-0f24-11e2-8525-18a905767e44 Washington Capitals WSH 1
10 42b507fc-3550-45f7-8df9-6590d4ad7cee 885fe581-c4c3-45e7-a06c-29ece7d47fad 44174b0c-0f24-11e2-8525-18a905767e44 New Jersey Devils NJ 1
11 7316c79a-26cf-4b7d-a0d8-54c17a905523 885fe581-c4c3-45e7-a06c-29ece7d47fad 441862de-0f24-11e2-8525-18a905767e44 Anaheim Ducks ANA 1
12 76005657-a34e-412b-905b-ed45aff9f42a 885fe581-c4c3-45e7-a06c-29ece7d47fad 44159241-0f24-11e2-8525-18a905767e44 Calgary Flames CGY 1
13 46d94319-767e-44f3-8eb3-c3fc8c3e4cdb 885fe581-c4c3-45e7-a06c-29ece7d47fad 44179d47-0f24-11e2-8525-18a905767e44 Philadelphia Flyers PHI 1
14 4d418987-0073-478c-9c83-4da0fd469f78 885fe581-c4c3-45e7-a06c-29ece7d47fad 42376e1c-6da8-461e-9443-cfcf0a9fcc4d Vegas Golden Knights VGK 1
15 e086d6f6-b5c9-4ace-ad09-5d257244a954 885fe581-c4c3-45e7-a06c-29ece7d47fad 44182a9d-0f24-11e2-8525-18a905767e44 Carolina Hurricanes CAR 1
16 68b8839f-6e60-4578-a38f-f080a41dd26c 885fe581-c4c3-45e7-a06c-29ece7d47fad 441766b9-0f24-11e2-8525-18a905767e44 New York Islanders NYI 1
17 5b1dfbb4-a561-4bbf-a155-9f715eacafbc 885fe581-c4c3-45e7-a06c-29ece7d47fad 44180e55-0f24-11e2-8525-18a905767e44 Winnipeg Jets WPG 1
18 cd5abd08-1c82-4f21-a70d-f72d36086b8b 885fe581-c4c3-45e7-a06c-29ece7d47fad 44151f7a-0f24-11e2-8525-18a905767e44 Los Angeles Kings LA 1
19 ca9cbe53-7459-4394-9e5c-0613bda54872 885fe581-c4c3-45e7-a06c-29ece7d47fad 1fb48e65-9688-4084-8868-02173525c3e1 Seattle Kraken SEA 1
20 4087cf79-b130-434f-b0cb-efe0b9336cad 885fe581-c4c3-45e7-a06c-29ece7d47fad 4417d3cb-0f24-11e2-8525-18a905767e44 Tampa Bay Lightning TB 1
21 2ff3c84d-f5ea-4024-aa78-be7290ab59c8 885fe581-c4c3-45e7-a06c-29ece7d47fad 715a1dba-4e9f-4158-8346-3473b6e3557f Utah Mammoth UTA 1
22 7b132dd4-8474-400b-a146-243c513c8f01 885fe581-c4c3-45e7-a06c-29ece7d47fad 441730a9-0f24-11e2-8525-18a905767e44 Toronto Maple Leafs TOR 1
23 3dced743-221a-4805-8a90-49f0e752e049 885fe581-c4c3-45e7-a06c-29ece7d47fad 4415ea6c-0f24-11e2-8525-18a905767e44 Edmonton Oilers EDM 1
24 8c1f3644-997a-46d0-9e17-206b6a0210cb 885fe581-c4c3-45e7-a06c-29ece7d47fad 4418464d-0f24-11e2-8525-18a905767e44 Florida Panthers FLA 1
25 7d42bbe2-bc4b-407a-a580-6882b51de839 885fe581-c4c3-45e7-a06c-29ece7d47fad 4417b7d7-0f24-11e2-8525-18a905767e44 Pittsburgh Penguins PIT 1
26 ef116944-0602-42c5-b8a6-c420bbde87c6 885fe581-c4c3-45e7-a06c-29ece7d47fad 441643b7-0f24-11e2-8525-18a905767e44 Nashville Predators NSH 1
27 dfa5ee11-2518-46b2-bf3f-300398f8ca73 885fe581-c4c3-45e7-a06c-29ece7d47fad 441781b9-0f24-11e2-8525-18a905767e44 New York Rangers NYR 1
28 9caba47c-529b-4ca5-82c6-d828a3dbb308 885fe581-c4c3-45e7-a06c-29ece7d47fad 44169bb9-0f24-11e2-8525-18a905767e44 Detroit Red Wings DET 1
29 e584619f-fb08-409e-b202-41889b553d7f 885fe581-c4c3-45e7-a06c-29ece7d47fad 4416d559-0f24-11e2-8525-18a905767e44 Buffalo Sabres BUF 1
30 d031ffba-9114-4745-b415-015a1feac1cc 885fe581-c4c3-45e7-a06c-29ece7d47fad 4416f5e2-0f24-11e2-8525-18a905767e44 Ottawa Senators OTT 1
31 3f83b808-343d-473d-9fe0-14e6f23dca65 885fe581-c4c3-45e7-a06c-29ece7d47fad 44155909-0f24-11e2-8525-18a905767e44 San Jose Sharks SJ 1
32 5568327b-fee4-40ee-a12c-0637840ef825 885fe581-c4c3-45e7-a06c-29ece7d47fad 44157522-0f24-11e2-8525-18a905767e44 Dallas Stars DAL 1
33 3cf51bb1-2d58-4a38-b691-670fd36f4ca8 885fe581-c4c3-45e7-a06c-29ece7d47fad 4416091c-0f24-11e2-8525-18a905767e44 Minnesota Wild MIN 1

18
stubs/utils.php Normal file
View File

@ -0,0 +1,18 @@
<?php
namespace App\Stubs;
function getCSV(string $filename, $names = []): \Generator
{
if (false !== ($handle = fopen($filename, "r"))) {
while (false !== ($data = fgetcsv($handle))) {
if (empty($names)) {
$names = $data;
continue;
}
yield array_combine($names, $data);
}
fclose($handle);
}
}