fix(demo): invalidate paginated caches after seeding
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:
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user