1 | <?php |
||
0 ignored issues
–
show
Coding Style
introduced
by
![]() |
|||
2 | |||
3 | /** |
||
4 | * src/Utility/Utils.php |
||
0 ignored issues
–
show
|
|||
5 | * |
||
6 | * @license https://opensource.org/licenses/MIT MIT License |
||
0 ignored issues
–
show
|
|||
7 | * @link https://miw.etsisi.upm.es/ ETS de IngenierÃa de Sistemas Informáticos |
||
0 ignored issues
–
show
|
|||
8 | */ |
||
0 ignored issues
–
show
|
|||
9 | |||
10 | namespace MiW\DemoDoctrine\Utility; |
||
11 | |||
12 | use Doctrine\ORM\{ EntityManager, Tools\SchemaTool }; |
||
13 | use Dotenv\Dotenv; |
||
14 | use Throwable; |
||
15 | |||
16 | /** |
||
17 | * Class Utils |
||
18 | */ |
||
0 ignored issues
–
show
|
|||
19 | class Utils |
||
20 | { |
||
0 ignored issues
–
show
|
|||
21 | /** |
||
22 | * Load the environment/configuration variables |
||
23 | * defined in .env file + (.env.docker || .env.local) |
||
24 | * |
||
25 | * @param string $dir project root directory |
||
0 ignored issues
–
show
|
|||
26 | */ |
||
0 ignored issues
–
show
|
|||
27 | public static function loadEnv(string $dir): void |
||
0 ignored issues
–
show
|
|||
28 | { |
||
0 ignored issues
–
show
|
|||
29 | require_once $dir . '/vendor/autoload.php'; |
||
0 ignored issues
–
show
|
|||
30 | |||
31 | if (!class_exists(Dotenv::class)) { |
||
0 ignored issues
–
show
|
|||
32 | fwrite(STDERR, 'ERROR: No se ha cargado la clase Dotenv' . PHP_EOL); |
||
0 ignored issues
–
show
|
|||
33 | exit(1); |
||
0 ignored issues
–
show
|
|||
34 | } |
||
35 | |||
36 | try { |
||
37 | // Load environment variables from .env file |
||
0 ignored issues
–
show
|
|||
38 | if (file_exists($dir . '/.env')) { |
||
0 ignored issues
–
show
|
|||
39 | $dotenv = Dotenv::createMutable($dir, '.env'); |
||
40 | $dotenv->load(); |
||
41 | } else { |
||
42 | fwrite(STDERR, 'ERROR: no existe el fichero .env' . PHP_EOL); |
||
0 ignored issues
–
show
|
|||
43 | exit(1); |
||
0 ignored issues
–
show
|
|||
44 | } |
||
45 | |||
46 | // Overload (if they exist) with .env.docker or .env.local |
||
0 ignored issues
–
show
|
|||
47 | if (isset($_SERVER['DOCKER']) && file_exists($dir . '/.env.docker')) { |
||
0 ignored issues
–
show
|
|||
48 | $dotenv = Dotenv::createMutable($dir, '.env.docker'); |
||
49 | $dotenv->load(); |
||
50 | } elseif (file_exists($dir . '/.env.local')) { |
||
0 ignored issues
–
show
|
|||
51 | $dotenv = Dotenv::createMutable($dir, '.env.local'); |
||
52 | $dotenv->load(); |
||
53 | } |
||
54 | |||
55 | // Requiring Variables to be set |
||
0 ignored issues
–
show
|
|||
56 | $dotenv->required([ 'DATABASE_NAME', 'DATABASE_USER', 'DATABASE_PASSWD', 'SERVER_VERSION' ]); |
||
0 ignored issues
–
show
|
|||
57 | $dotenv->required([ 'ENTITY_DIR' ]); |
||
0 ignored issues
–
show
|
|||
58 | } catch (Throwable $e) { |
||
59 | fwrite( |
||
60 | STDERR, |
||
61 | 'EXCEPCIÓN: ' . $e->getCode() . ' - ' . $e->getMessage() |
||
0 ignored issues
–
show
|
|||
62 | ); |
||
63 | exit(1); |
||
0 ignored issues
–
show
|
|||
64 | } |
||
0 ignored issues
–
show
|
|||
65 | } |
||
0 ignored issues
–
show
|
|||
66 | |||
67 | /** |
||
68 | * Drop & Update database schema |
||
69 | * |
||
70 | * @return void |
||
71 | */ |
||
72 | public static function updateSchema(): void |
||
73 | { |
||
0 ignored issues
–
show
|
|||
74 | try { |
||
75 | /** @var EntityManager $e_manager */ |
||
0 ignored issues
–
show
|
|||
76 | $e_manager = DoctrineConnector::getEntityManager(); |
||
0 ignored issues
–
show
|
|||
77 | $e_manager->clear(); |
||
0 ignored issues
–
show
|
|||
78 | $metadata = $e_manager->getMetadataFactory()->getAllMetadata(); |
||
0 ignored issues
–
show
|
|||
79 | $sch_tool = new SchemaTool($e_manager); |
||
0 ignored issues
–
show
|
|||
80 | $sch_tool->dropDatabase(); |
||
0 ignored issues
–
show
|
|||
81 | $sch_tool->updateSchema($metadata); |
||
0 ignored issues
–
show
|
|||
82 | } catch (Throwable $e) { |
||
83 | fwrite( |
||
84 | STDERR, |
||
85 | 'EXCEPCIÓN: ' . $e->getCode() . ' - ' . $e->getMessage() |
||
0 ignored issues
–
show
|
|||
86 | ); |
||
87 | exit(1); |
||
0 ignored issues
–
show
|
|||
88 | } |
||
89 | } |
||
0 ignored issues
–
show
|
|||
90 | } |
||
0 ignored issues
–
show
|
|||
91 |