FJavierGil /
baseDoctrine
| 1 | <?php |
||
|
0 ignored issues
–
show
Coding Style
introduced
by
Loading history...
|
|||
| 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 |