diff options
Diffstat (limited to 'lib/Db/NewsMapper.php')
-rw-r--r-- | lib/Db/NewsMapper.php | 84 |
1 files changed, 70 insertions, 14 deletions
diff --git a/lib/Db/NewsMapper.php b/lib/Db/NewsMapper.php index 4fa001f31..14913c1be 100644 --- a/lib/Db/NewsMapper.php +++ b/lib/Db/NewsMapper.php @@ -14,47 +14,101 @@ namespace OCA\News\Db; use OCA\News\Utility\Time; +use OCP\AppFramework\Db\DoesNotExistException; +use OCP\AppFramework\Db\MultipleObjectsReturnedException; +use OCP\AppFramework\Db\QBMapper; use OCP\IDBConnection; use OCP\AppFramework\Db\Mapper; use OCP\AppFramework\Db\Entity; +/** + * Class NewsMapper + * + * @package OCA\News\Db + */ abstract class NewsMapper extends Mapper { + const TABLE_NAME = ''; /** * @var Time */ private $time; + /** + * NewsMapper constructor. + * + * @param IDBConnection $db Database connection + * @param Time $time Time class + * @param string $entity Entity class + */ public function __construct( IDBConnection $db, - $table, - $entity, - Time $time + Time $time, + string $entity ) { - parent::__construct($db, $table, $entity); + parent::__construct($db, static::TABLE_NAME, $entity); $this->time = $time; } - public function update(Entity $entity) + public function update(Entity $entity): Entity { $entity->setLastModified($this->time->getMicroTime()); return parent::update($entity); } - public function insert(Entity $entity) + public function insert(Entity $entity): Entity { $entity->setLastModified($this->time->getMicroTime()); return parent::insert($entity); } /** - * @param int $id the id of the feed - * @param string $userId the id of the user + * Remove deleted items. + * + * @return void + */ + public function purgeDeleted(): void + { + $builder = $this->db->getQueryBuilder(); + $builder->delete($this->tableName) + ->where('deleted_at != 0') + ->execute() + ->execute(); + } + + abstract public function find(string $userId, int $id); + + /** + * Find all items. * - * @return \OCP\AppFramework\Db\Entity + * @return Entity[] */ - abstract public function find($id, $userId); + abstract public function findAll(): array; + + /** + * Find all items for a user. + * + * @param string $userId ID of the user + * + * @return Entity[] + */ + abstract public function findAllFromUser(string $userId): array; + + /** + * Find item for a user. + * + * @param string $userId ID of the user + * @param int $id ID of the item + * + * @return Feed + * + * @throws DoesNotExistException The item is not found + * @throws MultipleObjectsReturnedException Multiple items found + */ + abstract public function findFromUser(string $userId, int $id): Entity; + + /** * Performs a SELECT query with all arguments appened to the WHERE clause @@ -64,12 +118,14 @@ abstract class NewsMapper extends Mapper * Important: This method does not filter marked as deleted rows! * * @param array $search an assoc array from property to filter value - * @param int $limit + * @param int|null $limit Output limit + * @param int|null $offset Output offset + * + * @depreacted Legacy function * - * @paran int $offset * @return array */ - public function where(array $search = [], $limit = null, $offset = null) + public function where(array $search = [], ?int $limit = null, ?int $offset = null) { $entity = new $this->entityClass(); @@ -80,7 +136,7 @@ abstract class NewsMapper extends Mapper // accidental Sql injection if (!property_exists($entity, $property)) { $msg = 'Property ' . $property . ' does not exist on ' - . $this->entityClass; + . $this->entityClass; throw new \BadFunctionCallException($msg); } |