Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/mail.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAnna Larch <anna@nextcloud.com>2022-04-28 01:43:15 +0300
committerAnna Larch <anna@nextcloud.com>2022-05-12 17:36:42 +0300
commitaae3d728909f11caa174a98e1d214a3a30298fc6 (patch)
tree49b7f06721940dc193c7c390c99210d837400813 /lib
parent12e969d919f40c5adddc21d8046a66b472757702 (diff)
Cache provisioning configs
Signed-off-by: Anna Larch <anna@nextcloud.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/Service/Provisioning/Manager.php24
1 files changed, 22 insertions, 2 deletions
diff --git a/lib/Service/Provisioning/Manager.php b/lib/Service/Provisioning/Manager.php
index 36877b259..7207bbf60 100644
--- a/lib/Service/Provisioning/Manager.php
+++ b/lib/Service/Provisioning/Manager.php
@@ -34,6 +34,7 @@ use OCA\Mail\Db\TagMapper;
use OCA\Mail\Exception\ValidationException;
use OCP\AppFramework\Db\DoesNotExistException;
use OCP\AppFramework\Db\MultipleObjectsReturnedException;
+use OCP\ICacheFactory;
use OCP\IUser;
use OCP\IUserManager;
use OCP\LDAP\ILDAPProvider;
@@ -67,6 +68,9 @@ class Manager {
/** @var TagMapper */
private $tagMapper;
+ /** @var ICacheFactory */
+ private $cacheFactory;
+
public function __construct(IUserManager $userManager,
ProvisioningMapper $provisioningMapper,
MailAccountMapper $mailAccountMapper,
@@ -74,7 +78,8 @@ class Manager {
ILDAPProviderFactory $ldapProviderFactory,
AliasMapper $aliasMapper,
LoggerInterface $logger,
- TagMapper $tagMapper) {
+ TagMapper $tagMapper,
+ ICacheFactory $cacheFactory) {
$this->userManager = $userManager;
$this->provisioningMapper = $provisioningMapper;
$this->mailAccountMapper = $mailAccountMapper;
@@ -83,6 +88,7 @@ class Manager {
$this->aliasMapper = $aliasMapper;
$this->logger = $logger;
$this->tagMapper = $tagMapper;
+ $this->cacheFactory = $cacheFactory;
}
public function getConfigById(int $provisioningId): ?Provisioning {
@@ -90,7 +96,21 @@ class Manager {
}
public function getConfigs(): array {
- return $this->provisioningMapper->getAll();
+ $cache = null;
+ if ($this->cacheFactory->isLocalCacheAvailable()) {
+ $cache = $this->cacheFactory->createLocal('provisionings');
+ $cached = $cache->get('provisionings_all');
+ if ($cached !== null) {
+ return unserialize($cached, ['allowed_classes' => [Provisioning::class]]);
+ }
+ }
+
+ $provisionings = $this->provisioningMapper->getAll();
+ // let's cache the provisionings for 5 minutes
+ if ($this->cacheFactory->isLocalCacheAvailable()) {
+ $cache->set('provisionings_all', serialize($provisionings), 60 * 5);
+ }
+ return $provisionings;
}
public function provision(): int {