// SPDX-License-Identifier: AGPL-3.0-or-later namespace OCA\Forum\Db; use OCA\Forum\AppInfo\Application; use OCP\AppFramework\Db\DoesNotExistException; use OCP\AppFramework\Db\QBMapper; use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\IDBConnection; /** * @template-extends QBMapper */ class UserRoleMapper extends QBMapper { public function __construct( IDBConnection $db, ) { parent::__construct($db, Application::tableName('forum_user_roles'), UserRole::class); } /** * @throws \OCP\AppFramework\Db\MultipleObjectsReturnedException * @throws DoesNotExistException */ public function find(int $id): UserRole { /* @var $qb IQueryBuilder */ $qb = $this->db->getQueryBuilder(); $qb->select('*') ->from($this->getTableName()) ->where( $qb->expr() ->eq('id', $qb->createNamedParameter($id, IQueryBuilder::PARAM_INT)) ); return $this->findEntity($qb); } /** * @return array */ public function findByUserId(string $userId): array { /* @var $qb IQueryBuilder */ $qb = $this->db->getQueryBuilder(); $qb->select('*') ->from($this->getTableName()) ->where( $qb->expr() ->eq('user_id', $qb->createNamedParameter($userId, IQueryBuilder::PARAM_STR)) ); return $this->findEntities($qb); } /** * @return array */ public function findByRoleId(int $roleId): array { /* @var $qb IQueryBuilder */ $qb = $this->db->getQueryBuilder(); $qb->select('*') ->from($this->getTableName()) ->where( $qb->expr() ->eq('role_id', $qb->createNamedParameter($roleId, IQueryBuilder::PARAM_INT)) ); return $this->findEntities($qb); } /** * Find user roles for multiple users at once * * @param array $userIds * @return array */ public function findByUserIds(array $userIds): array { if (empty($userIds)) { return []; } /* @var $qb IQueryBuilder */ $qb = $this->db->getQueryBuilder(); $qb->select('*') ->from($this->getTableName()) ->where( $qb->expr()->in('user_id', $qb->createNamedParameter($userIds, IQueryBuilder::PARAM_STR_ARRAY)) ); return $this->findEntities($qb); } /** * @return array */ public function findAll(): array { /* @var $qb IQueryBuilder */ $qb = $this->db->getQueryBuilder(); $qb->select('*')->from($this->getTableName()); return $this->findEntities($qb); } }