%PDF- %PDF-
Direktori : /www/varak.net/nextcloud.varak.net/apps/app_api/lib/Service/ |
Current File : //www/varak.net/nextcloud.varak.net/apps/app_api/lib/Service/ExAppConfigService.php |
<?php declare(strict_types=1); namespace OCA\AppAPI\Service; use OCA\AppAPI\Db\ExAppConfig; use OCA\AppAPI\Db\ExAppConfigMapper; use OCP\AppFramework\Db\DoesNotExistException; use OCP\AppFramework\Db\MultipleObjectsReturnedException; use OCP\DB\Exception; use Psr\Log\LoggerInterface; /** * App configuration (appconfig_ex) */ class ExAppConfigService { public function __construct( private ExAppConfigMapper $mapper, private LoggerInterface $logger, ) { } public function getAppConfigValues(string $appId, array $configKeys): ?array { try { return array_map(function (ExAppConfig $exAppConfig) { return [ 'configkey' => $exAppConfig->getConfigkey(), 'configvalue' => $exAppConfig->getConfigvalue() ?? '', ]; }, $this->mapper->findByAppConfigKeys($appId, $configKeys)); } catch (Exception) { return null; } } public function setAppConfigValue(string $appId, string $configKey, mixed $configValue, ?int $sensitive = null): ?ExAppConfig { $appConfigEx = $this->getAppConfig($appId, $configKey); if ($appConfigEx === null) { try { $appConfigEx = $this->mapper->insert(new ExAppConfig([ 'appid' => $appId, 'configkey' => $configKey, 'configvalue' => $configValue ?? '', 'sensitive' => $sensitive ?? 0, ])); } catch (Exception $e) { $this->logger->error(sprintf('Failed to insert appconfig_ex value. Error: %s', $e->getMessage()), ['exception' => $e]); return null; } } else { $appConfigEx->setConfigvalue($configValue); if ($sensitive !== null) { $appConfigEx->setSensitive($sensitive); } if ($this->updateAppConfigValue($appConfigEx) === null) { $this->logger->error(sprintf('Error while updating appconfig_ex %s value.', $configKey)); return null; } } return $appConfigEx; } public function deleteAppConfigValues(array $configKeys, string $appId): int { try { return $this->mapper->deleteByAppidConfigkeys($appId, $configKeys); } catch (Exception) { return -1; } } /** * @return ExAppConfig[] */ public function getAllAppConfig(string $appId): array { try { return $this->mapper->findAllByAppid($appId); } catch (Exception) { return []; } } public function getAppConfig(mixed $appId, mixed $configKey): ?ExAppConfig { try { return $this->mapper->findByAppConfigKey($appId, $configKey); } catch (DoesNotExistException|MultipleObjectsReturnedException|Exception) { return null; } } public function updateAppConfigValue(ExAppConfig $exAppConfig): ?ExAppConfig { try { return $this->mapper->update($exAppConfig); } catch (Exception) { return null; } } public function deleteAppConfig(ExAppConfig $exAppConfig): ?int { try { return $this->mapper->deleteByAppidConfigkeys($exAppConfig->getAppid(), [$exAppConfig->getConfigkey()]); } catch (Exception) { return null; } } }