80 lines
2.3 KiB
PHP
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();
|
|
}
|
|
}
|
|
}
|