활성화된 모듈 identifier 배열 */ public static function getActiveModuleIdentifiers(): array { return CacheService::remember( self::$cacheGroup, 'active_identifiers', fn () => Module::where('status', ExtensionStatus::Active->value) ->pluck('identifier') ->toArray(), null, 'modules' ); } /** * 설치된 모듈 (active + inactive) identifier 목록을 조회합니다. * * @return array 설치된 모듈 identifier 배열 */ public static function getInstalledModuleIdentifiers(): array { return CacheService::remember( self::$cacheGroup, 'installed_identifiers', fn () => Module::whereIn('status', [ ExtensionStatus::Active->value, ExtensionStatus::Inactive->value, ])->pluck('identifier')->toArray(), null, 'modules' ); } /** * 모듈 상태 캐시를 무효화합니다. * 모듈 상태 변경 시 (install, activate, deactivate, uninstall) 호출해야 합니다. * * @return void */ public static function invalidateModuleStatusCache(): void { CacheService::forgetMany(self::$cacheGroup, [ 'active_identifiers', 'installed_identifiers', ]); } }