%PDF- %PDF-
| Direktori : /www/varak.net/nextcloud.varak.net/apps_old/apps/passwords/lib/Db/ |
| Current File : /www/varak.net/nextcloud.varak.net/apps_old/apps/passwords/lib/Db/AbstractRevisionMapper.php |
<?php
/*
* @copyright 2024 Passwords App
*
* @author Marius David Wieschollek
* @license AGPL-3.0
*
* This file is part of the Passwords App
* created by Marius David Wieschollek.
*/
namespace OCA\Passwords\Db;
use OCA\Passwords\Exception\Database\DecryptedDataException;
use OCP\AppFramework\Db\DoesNotExistException;
use OCP\AppFramework\Db\Entity;
use OCP\AppFramework\Db\MultipleObjectsReturnedException;
use OCP\DB\Exception;
use OCP\DB\QueryBuilder\IQueryBuilder;
/**
* Class AbstractRevisionMapper
*
* @package OCA\Passwords\Db
*/
abstract class AbstractRevisionMapper extends AbstractMapper {
const MODEL_TABLE_NAME = '';
/**
* @return EntityInterface[]
* @throws Exception
*/
public function findAllHidden(): array {
$qb = $this->db->getQueryBuilder();
$qb->select('*')
->from(static::TABLE_NAME)
->where(
$qb->expr()->eq('deleted', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL)),
$qb->expr()->eq('hidden', $qb->createNamedParameter(true, IQueryBuilder::PARAM_BOOL))
);
if($this->userId !== null) {
$qb->andWhere(
$qb->expr()->eq('user_id', $qb->createNamedParameter($this->userId))
);
}
return $this->findEntities($qb);
}
/**
* @param string $modelUuid
*
* @return RevisionInterface|null
* @throws DoesNotExistException
* @throws Exception
* @throws MultipleObjectsReturnedException
*/
public function findCurrentRevisionByModel(string $modelUuid): ?RevisionInterface {
$sql = $this->getJoinStatement(static::MODEL_TABLE_NAME, 'model');
$sql->andWhere(
$sql->expr()->eq('b.user_id', 'a.user_id'),
$sql->expr()->eq('b.revision', 'a.uuid'),
$sql->expr()->eq('b.uuid', $sql->createNamedParameter($modelUuid))
);
return $this->findEntity($sql);
}
/**
* @param string $modelUuid
*
* @return RevisionInterface[]|Entity[]
* @throws Exception
*/
public function findAllByModel(string $modelUuid): array {
$sql = $this->getJoinStatement(static::MODEL_TABLE_NAME, 'model');
$sql->andWhere(
$sql->expr()->eq('b.user_id', 'a.user_id'),
$sql->expr()->eq('b.uuid', $sql->createNamedParameter($modelUuid))
);
return $this->findEntities($sql);
}
/**
* @param AbstractRevision $entity
*
* @return AbstractRevision
* @throws DecryptedDataException
* @throws Exception
*/
public function insert(Entity $entity): AbstractRevision {
if($entity->_isDecrypted()) {
throw new DecryptedDataException($entity);
}
return parent::insert($entity);
}
/**
* @param AbstractRevision $entity
*
* @return AbstractRevision
* @throws DecryptedDataException
* @throws Exception
*/
public function update(Entity $entity): AbstractRevision {
if($entity->_isDecrypted()) {
throw new DecryptedDataException($entity);
}
return parent::update($entity);
}
}