52 lines
1.4 KiB
PHP
52 lines
1.4 KiB
PHP
<?php
|
||
|
||
namespace KTXC\Service;
|
||
|
||
use KTXC\Models\Tenant\TenantObject;
|
||
use KTXC\Stores\TenantStore;
|
||
|
||
class TenantService
|
||
{
|
||
public function __construct(
|
||
protected readonly TenantStore $store,
|
||
) {}
|
||
|
||
public function fetchByDomain(string $domain): ?TenantObject
|
||
{
|
||
return $this->store->fetchByDomain($domain);
|
||
}
|
||
|
||
public function fetchById(string $identifier): ?TenantObject
|
||
{
|
||
return $this->store->fetch($identifier);
|
||
}
|
||
|
||
// =========================================================================
|
||
// Settings
|
||
// =========================================================================
|
||
|
||
/**
|
||
* Fetch all – or a filtered subset of – a tenant's settings.
|
||
*
|
||
* @param string $identifier Tenant identifier
|
||
* @param string[] $keys Optional list of keys to return; empty = all
|
||
*
|
||
* @return array<string, mixed>
|
||
*/
|
||
public function fetchSettings(string $identifier, array $keys = []): array
|
||
{
|
||
return $this->store->fetchSettings($identifier, $keys);
|
||
}
|
||
|
||
/**
|
||
* Merge-update settings for a tenant.
|
||
*
|
||
* @param string $identifier Tenant identifier
|
||
* @param array<string, mixed> $settings Key-value pairs to persist
|
||
*/
|
||
public function storeSettings(string $identifier, array $settings): bool
|
||
{
|
||
return $this->store->storeSettings($identifier, $settings);
|
||
}
|
||
}
|