> */ public const DEFINITIONS = [ DunIncoInfView::class, IncoLangView::class, VIncoArtSiteView::class, MetaUtilTable::class, ArticleRefTable::class, AssoIncoZoneVersioCcialTable::class, AssoIncoZoneVersioMktTable::class, AssoIncoZoneVersioQualTable::class, IncoTable::class, IncoCompoTable::class, IncoOrigininfoTable::class, IncoVersionTable::class, RuPersonneSirhTable::class, AdditifTable::class, ArticleAssoProduitsTable::class, ArticleRefGencodView::class, ArtRayonTable::class, AssoCommunesCpTable::class, CalibreOeufsTable::class, DunIncoView::class, DunIncoNosocView::class, EpurerFamVenteView::class, FamRgptTable::class, FamVenteTable::class, GroupementQualTable::class, IncoAllegationsTable::class, IncoAllergeneTable::class, IncoArticleView::class, IncoAssoAllergeneTable::class, IncoAssoTraceTable::class, IncoBriqueGpcTable::class, IncoCompoNutriscoreView::class, IncoDoaTable::class, IncoInterprofessionTable::class, IncoNeaTable::class, IncoSitProdTable::class, IncoSocRefIncoView::class, IncoSuiviEnvoiTable::class, InseeCommunesTable::class, MarqueTable::class, MediaAssoArticleTable::class, MutTable::class, NdpTable::class, OrgCertifTable::class, PaletteIncoTable::class, ServiceConsoIncoTable::class, SiteProdGrpTable::class, SitProdIncoView::class, SocDlcIncoView::class, SocieteInvTable::class, SousFamTable::class, TypeConditTable::class, TypeConservationTable::class, TypEmbTable::class, UtilisableTable::class, VisuelExportGenfiView::class, ]; public function __construct(private readonly string $connection) { } public function up(): void { $conn = DB::connection($this->connection); /** @var list */ $schemas = []; foreach (self::DEFINITIONS as $definition) { $schemas[$definition::schemaName()] = $definition::schemaName(); } if ($conn->getDriverName() === 'oracle') { foreach ($schemas as $schemaUser) { try { $conn->statement("CREATE USER {$schemaUser} IDENTIFIED BY {$schemaUser} DEFAULT TABLESPACE USERS QUOTA UNLIMITED ON USERS"); } catch (\Throwable $e) { unset($e); } } } if (app()->environment('local', 'testing')) { $this->down(); } $schema = Schema::connection($this->connection); foreach (self::DEFINITIONS as $definition) { $definition::up($schema); } } public function down(): void { $schema = Schema::connection($this->connection); foreach (array_reverse(self::DEFINITIONS) as $definition) { $definition::down($schema); } $conn = DB::connection($this->connection); if ($conn->getDriverName() === 'oracle') { try { $conn->statement('PURGE RECYCLEBIN'); } catch (\Throwable $e) { unset($e); } } } public static function runUp(string $connection): void { (new self($connection))->up(); } public static function runDown(string $connection): void { (new self($connection))->down(); } }