cache = $cacheManager->store($config->get('tenancy.storage_drivers.db.cache_store')); $this->config = $config; } protected function ttl(): int { return $this->config->get('tenancy.storage_drivers.db.cache_ttl'); } public function getTenantIdByDomain(string $domain, Closure $query): string { return $this->cache->remember('_tenancy_domain_to_id:' . $domain, $this->ttl(), $query); } public function findById(string $id, Closure $dataQuery, Closure $domainsQuery): Tenant { $data = $this->cache->remember('_tenancy_id_to_data:' . $id, $this->ttl(), $dataQuery); $domains = $this->cache->remember('_tenancy_id_to_domains:' . $id, $this->ttl(), $domainsQuery); return Tenant::fromStorage($data)->withDomains($domains); } public function invalidateTenant(string $id): void { $this->invalidateTenantData($id); $this->invalidateTenantDomains($id); } public function invalidateTenantData(string $id): void { $this->cache->forget('_tenancy_id_to_data:' . $id); } public function invalidateTenantDomains(string $id): void { $this->cache->forget('_tenancy_id_to_domains:' . $id); } public function invalidateDomainToIdMapping(array $domains): void { foreach ($domains as $domain) { $this->cache->forget('_tenancy_domain_to_id:' . $domain); } } }