fix(demo): invalidate paginated caches after seeding
Some checks failed
CI / Backend Tests (push) Has been cancelled
CI / Frontend Tests (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
CI / Naming Conventions (push) Has been cancelled
CI / Build Check (push) Has been cancelled

Invalidate tenant read-model caches after generating demo data so seeded users, classes and assignments appear immediately in the UI.
This commit is contained in:
2026-03-10 22:58:06 +01:00
parent ee62beea8c
commit 0f3e57c6e6
2 changed files with 74 additions and 0 deletions

View File

@@ -6,6 +6,7 @@ namespace App\Administration\Infrastructure\Service;
use App\Administration\Application\Port\OfficialCalendarProvider;
use App\Administration\Application\Port\PasswordHasher;
use App\Administration\Application\Service\Cache\PaginatedQueryCache;
use App\Administration\Domain\Model\AcademicYear\DefaultPeriods;
use App\Administration\Domain\Model\AcademicYear\PeriodType;
use App\Administration\Domain\Model\ClassAssignment\ClassAssignment;
@@ -69,6 +70,7 @@ final readonly class DemoDataGenerator
private \App\Administration\Domain\Model\SchoolCalendar\SchoolCalendarRepository $schoolCalendarRepository,
private GradingConfigurationRepository $gradingConfigurationRepository,
private PasswordHasher $passwordHasher,
private PaginatedQueryCache $paginatedQueryCache,
private Clock $clock,
private TenantContext $tenantContext,
private CurrentAcademicYearResolver $currentAcademicYearResolver,
@@ -114,6 +116,7 @@ final readonly class DemoDataGenerator
$this->seedTeacherAssignments($tenantId, $academicYearId, $users, $classes, $subjects, $now, $result);
$this->seedStudentGuardianLinks($tenantId, $users, $now, $result);
$this->seedScheduleSlots($tenantId, $classes, $subjects, $users, $academicYearStartYear, $now, $result);
$this->invalidateReadModelCaches((string) $tenantId);
return $result;
} finally {
@@ -667,6 +670,20 @@ final readonly class DemoDataGenerator
return $startYear;
}
private function invalidateReadModelCaches(string $tenantId): void
{
foreach ([
'users',
'classes',
'subjects',
'assignments',
'parent_invitations',
'students_image_rights',
] as $entityType) {
$this->paginatedQueryCache->invalidate($entityType, $tenantId);
}
}
private function emailFor(string $emailSlug, string $subdomain): string
{
return sprintf('%s.%s@classeo.test', strtolower($emailSlug), strtolower($subdomain));