Files
yogibook_aury_new/db/migrations/AddIdschoolToDomainTables.php
T
2026-10-03 14:11:56 +02:00

80 lines
2.3 KiB
PHP

<?php
declare(strict_types=1);
use Phinx\Migration\AbstractMigration;
final class AddIdschoolToDomainTables extends AbstractMigration
{
/**
* Tabelle applicative che diventano "per scuola".
* Le tabelle auth_* (Vanguard) restano globali: il legame
* utente-scuola passa da school_user.
*/
private const TABLES = [
'associateclass',
'bookingclass',
'certificateuserprofile',
'copyorder',
'copyorder_items',
'dayoff',
'employee',
'events',
'event_bookings',
'event_locations',
'expiryparameter',
'location',
'option',
'orderbook',
'propagation',
'service',
'servicecategory',
'serviceschedule',
'userprofile',
];
public function up(): void
{
foreach (self::TABLES as $name) {
$this->table($name)
->addColumn('idschool', 'integer', [
'signed' => false,
'null' => false,
'default' => 1, // TEMPORANEO: verrà rimosso quando tutte le INSERT passeranno idschool
])
->addIndex(['idschool'], ['name' => "idx_{$name}_idschool"])
->update();
}
// Slug eventi: unico per scuola, non più globale
$this->table('events')
->removeIndexByName('events_slug_unique')
->addIndex(['idschool', 'slug'], ['unique' => true, 'name' => 'events_school_slug_unique'])
->update();
// Impostazioni: una sola riga per scuola
$this->table('option')
->addIndex(['idschool'], ['unique' => true, 'name' => 'option_idschool_unique'])
->update();
}
public function down(): void
{
$this->table('option')
->removeIndexByName('option_idschool_unique')
->update();
$this->table('events')
->removeIndexByName('events_school_slug_unique')
->addIndex(['slug'], ['unique' => true, 'name' => 'events_slug_unique'])
->update();
foreach (self::TABLES as $name) {
$this->table($name)
->removeIndexByName("idx_{$name}_idschool")
->removeColumn('idschool')
->update();
}
}
}