findEntities(IQueryBuilder $query) * @template-extends QBMapper */ class VoteMapper extends QBMapper { public function __construct(IDBConnection $db) { parent::__construct($db, 'talk_poll_votes', Vote::class); } /** * @return list */ public function findByPollId(int $pollId): array { $query = $this->db->getQueryBuilder(); $query->select('*') ->from($this->getTableName()) ->where($query->expr()->eq('poll_id', $query->createNamedParameter($pollId))); return $this->findEntities($query); } /** * @return list */ public function findByPollIdForActor(int $pollId, string $actorType, string $actorId): array { $query = $this->db->getQueryBuilder(); $query->select('*') ->from($this->getTableName()) ->where($query->expr()->eq('poll_id', $query->createNamedParameter($pollId))) ->andWhere($query->expr()->eq('actor_type', $query->createNamedParameter($actorType))) ->andWhere($query->expr()->eq('actor_id', $query->createNamedParameter($actorId))); return $this->findEntities($query); } public function deleteByRoomId(int $roomId): void { $query = $this->db->getQueryBuilder(); $query->delete($this->getTableName()) ->where($query->expr()->eq('room_id', $query->createNamedParameter($roomId, IQueryBuilder::PARAM_INT))); $query->executeStatement(); } public function deleteByPollId(int $pollId): void { $query = $this->db->getQueryBuilder(); $query->delete($this->getTableName()) ->where($query->expr()->eq('poll_id', $query->createNamedParameter($pollId, IQueryBuilder::PARAM_INT))); $query->executeStatement(); } public function deleteVotesByActor(int $pollId, string $actorType, string $actorId): void { $query = $this->db->getQueryBuilder(); $query->delete($this->getTableName()) ->where($query->expr()->eq('poll_id', $query->createNamedParameter($pollId))) ->andWhere($query->expr()->eq('actor_type', $query->createNamedParameter($actorType))) ->andWhere($query->expr()->eq('actor_id', $query->createNamedParameter($actorId))); $query->executeStatement(); } }