Files
Classeo/backend/migrations/Version20260210100000.php
Mathias STRASSER 44ebe5e511 feat: Liaison parents-enfants avec gestion des tuteurs
Les parents doivent pouvoir suivre la scolarité de leurs enfants (notes,
emploi du temps, devoirs). Cela nécessite un lien formalisé entre le
compte parent et le compte élève, géré par les administrateurs.

Le lien est établi soit manuellement via l'interface d'administration,
soit automatiquement lors de l'activation du compte parent lorsque
l'invitation inclut un élève cible. Ce lien conditionne l'accès aux
données scolaires de l'enfant (autorisations vérifiées par un voter
dédié).
2026-02-12 08:38:19 +01:00

49 lines
1.7 KiB
PHP

<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* Creates the student_guardians table for parent-child linking.
*
* Each student can have at most 2 guardians (parents/tutors).
* The constraint is enforced at application level (see StudentGuardian::MAX_GUARDIANS_PER_STUDENT).
* The UNIQUE constraint on (student_id, guardian_id) prevents duplicate links.
*/
final class Version20260210100000 extends AbstractMigration
{
public function getDescription(): string
{
return 'Create student_guardians table for parent-child linking (Story 2.7)';
}
public function up(Schema $schema): void
{
$this->addSql(<<<'SQL'
CREATE TABLE IF NOT EXISTS student_guardians (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
student_id UUID NOT NULL,
guardian_id UUID NOT NULL,
relationship_type VARCHAR(50) NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
created_by UUID,
tenant_id UUID NOT NULL,
UNIQUE(student_id, guardian_id)
)
SQL);
$this->addSql('CREATE INDEX IF NOT EXISTS idx_student_guardians_tenant ON student_guardians(tenant_id)');
$this->addSql('CREATE INDEX IF NOT EXISTS idx_student_guardians_guardian ON student_guardians(guardian_id)');
$this->addSql('CREATE INDEX IF NOT EXISTS idx_student_guardians_student ON student_guardians(student_id)');
}
public function down(Schema $schema): void
{
$this->addSql('DROP TABLE IF EXISTS student_guardians');
}
}