diff options
-rw-r--r-- | apps/federation/lib/Db/TrustedServer.php | 63 | ||||
-rw-r--r-- | apps/federation/lib/Db/TrustedServerMapper.php | 39 |
2 files changed, 102 insertions, 0 deletions
diff --git a/apps/federation/lib/Db/TrustedServer.php b/apps/federation/lib/Db/TrustedServer.php new file mode 100644 index 00000000000..9704da8de0c --- /dev/null +++ b/apps/federation/lib/Db/TrustedServer.php @@ -0,0 +1,63 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +namespace OCA\Federation\Db; + +use JsonSerializable; +use OCA\Federation\TrustedServers; +use OCP\AppFramework\Db\Entity; + +/** + * @method string getUrl() + * @method void setUrl(string $url) + * @method string getUrlHash() + * @method void setUrlHash(string $urlHash) + * @method string|null getToken() + * @method void setToken(?string $token) + * @method string|null getSharedSecret() + * @method void setSharedSecret(?string $sharedSecret) + * @method int getStatus() + * @method void setStatus(int $status) + * @method string|null getSyncToken() + * @method void setSyncToken(?string $syncToken) + * + * @psalm-type TrustedServerStatus = TrustedServers::STATUS_OK|TrustedServers::STATUS_PENDING|TrustedServers::STATUS_FAILURE|TrustedServers::STATUS_ACCESS_REVOKED + */ +class TrustedServer extends Entity implements JsonSerializable { + + protected string $url; + protected string $urlHash; + protected ?string $token; + protected ?string $sharedSecret; + /** @psalm-var TrustedServerStatus $status */ + protected int $status; + protected ?string $syncToken; + + public function __construct() { + $this->addType('url', 'string'); + $this->addType('urlHash', 'string'); + $this->addType('token', 'string'); + $this->addType('sharedSecret', 'string'); + $this->addType('status', 'integer'); + $this->addType('syncToken', 'string'); + } + + #[\Override] + public function jsonSerialize(): array { + return [ + 'id' => $this->getId(), + 'url' => $this->getUrl(), + 'urlHash' => $this->getUrlHash(), + 'token' => $this->getToken(), + 'sharedSecret' => $this->getSharedSecret(), + 'status' => $this->getStatus(), + 'syncToken' => $this->getSyncToken(), + ]; + } +} diff --git a/apps/federation/lib/Db/TrustedServerMapper.php b/apps/federation/lib/Db/TrustedServerMapper.php new file mode 100644 index 00000000000..fbdbb584d04 --- /dev/null +++ b/apps/federation/lib/Db/TrustedServerMapper.php @@ -0,0 +1,39 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +namespace OCA\Federation\Db; + +use OCP\AppFramework\Db\DoesNotExistException; +use OCP\AppFramework\Db\QBMapper; +use OCP\DB\QueryBuilder\IQueryBuilder; +use OCP\IDBConnection; + +/** + * @template-extends QBMapper<TrustedServer> + */ +class TrustedServerMapper extends QBMapper { + public const TABLE_NAME = 'trusted_servers'; + + public function __construct(IDBConnection $db) { + parent::__construct($db, self::TABLE_NAME); + } + + /** + * @throws DoesNotExistException + */ + public function findById(int $id): TrustedServer { + $qb = $this->db->getQueryBuilder(); + + $qb->select('*') + ->from($this->getTableName()) + ->where($qb->expr()->eq('id', $qb->createNamedParameter($id, IQueryBuilder::PARAM_INT))); + + return $this->findEntity($qb); + } +} |