Skip to content

Commit 2f71e71

Browse files
author
Ruslan Baidan
authored
Update InstanceImportService.php
Added caching for threats and vulnerabilities process of specific risks.
1 parent 22b45db commit 2f71e71

File tree

1 file changed

+28
-9
lines changed

1 file changed

+28
-9
lines changed

src/Service/InstanceImportService.php

+28-9
Original file line numberDiff line numberDiff line change
@@ -1411,12 +1411,15 @@ private function processInstanceRisks(
14111411
);
14121412

14131413
if ((int)$instanceRiskData['specific'] === InstanceRisk::TYPE_SPECIFIC) {
1414-
$threat = $this->threatTable->findByAnrAndUuid($anr, $threatData['uuid']);
1414+
$threat = $this->importCacheHelper->getItemFromArrayCache('threats', $threatData['uuid'])
1415+
?: $this->threatTable->findByAnrAndUuid($anr, $threatData['uuid']);
14151416
if ($threat === null) {
14161417
/* The code should be unique. */
1417-
$threatData['code'] = $this->threatTable->existsWithAnrAndCode($anr, $threatData['code'])
1418-
? $threatData['code'] . '-' . time()
1419-
: $threatData['code'];
1418+
$threatData['code'] =
1419+
$this->importCacheHelper->getItemFromArrayCache('threats_codes', $threatData['code']) !== null
1420+
|| $this->threatTable->existsWithAnrAndCode($anr, $threatData['code'])
1421+
? $threatData['code'] . '-' . time()
1422+
: $threatData['code'];
14201423

14211424
$threat = (new Threat())
14221425
->setUuid($threatData['uuid'])
@@ -1448,15 +1451,23 @@ private function processInstanceRisks(
14481451
*/
14491452

14501453
$this->threatTable->saveEntity($threat, false);
1454+
1455+
$this->importCacheHelper->addItemToArrayCache('threats', $threat, $threat->getUuid());
1456+
$this->importCacheHelper
1457+
->addItemToArrayCache('threats_codes', $threat->getCode(), $threat->getCode());
14511458
}
14521459

1453-
$vulnerability = $this->vulnerabilityTable->findByAnrAndUuid($anr, $vulnerabilityData['uuid'], false);
1460+
$vulnerability = $this->importCacheHelper
1461+
->getItemFromArrayCache('vulnerabilities', $vulnerabilityData['uuid'])
1462+
?: $this->vulnerabilityTable->findByAnrAndUuid($anr, $vulnerabilityData['uuid'], false);
14541463
if ($vulnerability === null) {
14551464
/* The code should be unique. */
1456-
$vulnerabilityData['code'] = $this->vulnerabilityTable->existsWithAnrAndCode(
1457-
$anr,
1458-
$vulnerabilityData['code']
1459-
) ? $vulnerabilityData['code'] . '-' . time() : $vulnerabilityData['code'];
1465+
$vulnerabilityData['code'] =
1466+
$this->importCacheHelper
1467+
->getItemFromArrayCache('vulnerabilities_codes', $vulnerabilityData['code']) !== null
1468+
|| $this->vulnerabilityTable->existsWithAnrAndCode($anr, $vulnerabilityData['code'])
1469+
? $vulnerabilityData['code'] . '-' . time()
1470+
: $vulnerabilityData['code'];
14601471

14611472
$vulnerability = (new Vulnerability())
14621473
->setUuid($vulnerabilityData['uuid'])
@@ -1469,6 +1480,14 @@ private function processInstanceRisks(
14691480
->setCreator($this->connectedUser->getEmail());
14701481

14711482
$this->vulnerabilityTable->saveEntity($vulnerability, false);
1483+
1484+
$this->importCacheHelper
1485+
->addItemToArrayCache('vulnerabilities', $vulnerability, $vulnerability->getUuid());
1486+
$this->importCacheHelper->addItemToArrayCache(
1487+
'vulnerabilities_codes',
1488+
$vulnerability->getCode(),
1489+
$vulnerability->getCode()
1490+
);
14721491
}
14731492

14741493
$instanceRisk = $this->createInstanceRiskFromData(

0 commit comments

Comments
 (0)