Ejemplo n.º 1
0
 public function createDatabase($identifier = null)
 {
     $sourcesFolder = $this->path . "/" . Module::DIR_SOURCES;
     if (!is_dir($sourcesFolder)) {
         return;
     }
     $targetEntities = [];
     foreach (EntityReflection::getEntities($sourcesFolder) as $entityClassName) {
         if ($entityClassName::getSchema()->getDb() == $identifier) {
             $targetEntities[] = $entityClassName;
         }
     }
     if (!$targetEntities) {
         echo "No entities found (no tables to create)";
         return;
     }
     $databaseSettings = Db::getCredentials($identifier);
     $databaseString = $databaseSettings["username"] . ($databaseSettings["password"] ? ':****' : '') . '@' . $databaseSettings["host"] . '/' . $databaseSettings["database"];
     echo "Updating database {$databaseString}\n";
     Db::create($identifier);
     foreach ($targetEntities as $entityClassName) {
         echo "    patching table for {$entityClassName}\n";
         try {
             $entityClassName::getSchema()->patch();
         } catch (\Exception $e) {
             echo $entityClassName . ": " . $e->getMessage() . "\n";
         }
     }
     foreach ($targetEntities as $entityClassName) {
         try {
             echo "    checking triggers for {$entityClassName}\n";
             $entityClassName::getSchema()->createTriggers();
         } catch (\Exception $e) {
             echo $e->getMessage();
         }
     }
 }