Skip to content

Commit

Permalink
Make images query API more explicit
Browse files Browse the repository at this point in the history
  • Loading branch information
christeredvartsen committed Jul 25, 2020
1 parent a474111 commit b1d2aee
Show file tree
Hide file tree
Showing 6 changed files with 229 additions and 185 deletions.
20 changes: 10 additions & 10 deletions src/Database/Doctrine.php
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,7 @@ public function getImages(array $users, Query $query, Images $model) : array {
$qb->where($composite);
}

if ($sort = $query->sort()) {
if ($sort = $query->getSort()) {
// Fields valid for sorting
$validFields = [
'size' => true,
Expand All @@ -266,8 +266,8 @@ public function getImages(array $users, Query $query, Images $model) : array {
$qb->orderBy('added', 'DESC');
}

$from = $query->from();
$to = $query->to();
$from = $query->getFrom();
$to = $query->getTo();

if ($from || $to) {
if ($from !== null) {
Expand All @@ -279,7 +279,7 @@ public function getImages(array $users, Query $query, Images $model) : array {
}
}

if ($imageIdentifiers = $query->imageIdentifiers()) {
if ($imageIdentifiers = $query->getImageIdentifiers()) {
$expr = $qb->expr();
$composite = $expr->orX();

Expand All @@ -291,7 +291,7 @@ public function getImages(array $users, Query $query, Images $model) : array {
$qb->andWhere($composite);
}

if ($checksums = $query->checksums()) {
if ($checksums = $query->getChecksums()) {
$expr = $qb->expr();
$composite = $expr->orX();

Expand All @@ -303,7 +303,7 @@ public function getImages(array $users, Query $query, Images $model) : array {
$qb->andWhere($composite);
}

if ($originalChecksums = $query->originalChecksums()) {
if ($originalChecksums = $query->getOriginalChecksums()) {
$expr = $qb->expr();
$composite = $expr->orX();

Expand All @@ -321,18 +321,18 @@ public function getImages(array $users, Query $query, Images $model) : array {
$stmt = $hitsQb->execute();
$model->setHits((int) $stmt->fetchColumn());

if ($limit = $query->limit()) {
if ($limit = $query->getLimit()) {
$qb->setMaxResults($limit);
}

if ($page = $query->page()) {
$offset = (int) $query->limit() * ($page - 1);
if ($page = $query->getPage()) {
$offset = (int) $query->getLimit() * ($page - 1);
$qb->setFirstResult($offset);
}

$stmt = $qb->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
$returnMetadata = $query->returnMetadata();
$returnMetadata = $query->getReturnMetadata();

foreach ($rows as $row) {
$image = [
Expand Down
20 changes: 10 additions & 10 deletions src/Database/MongoDB.php
Original file line number Diff line number Diff line change
Expand Up @@ -265,8 +265,8 @@ public function getImages(array $users, Query $query, Images $model) : array {
$queryData['user']['$in'] = $users;
}

$from = $query->from();
$to = $query->to();
$from = $query->getFrom();
$to = $query->getTo();

if ($from || $to) {
$tmp = [];
Expand All @@ -282,19 +282,19 @@ public function getImages(array $users, Query $query, Images $model) : array {
$queryData['added'] = $tmp;
}

$imageIdentifiers = $query->imageIdentifiers();
$imageIdentifiers = $query->getImageIdentifiers();

if (!empty($imageIdentifiers)) {
$queryData['imageIdentifier']['$in'] = $imageIdentifiers;
}

$checksums = $query->checksums();
$checksums = $query->getChecksums();

if (!empty($checksums)) {
$queryData['checksum']['$in'] = $checksums;
}

$originalChecksums = $query->originalChecksums();
$originalChecksums = $query->getOriginalChecksums();

if (!empty($originalChecksums)) {
$queryData['originalChecksum']['$in'] = $originalChecksums;
Expand All @@ -303,7 +303,7 @@ public function getImages(array $users, Query $query, Images $model) : array {
// Sorting
$sort = ['added' => -1];

if ($querySort = $query->sort()) {
if ($querySort = $query->getSort()) {
$sort = [];

foreach ($querySort as $s) {
Expand All @@ -317,20 +317,20 @@ public function getImages(array $users, Query $query, Images $model) : array {
'user', 'imageIdentifier', 'mime', 'size', 'width', 'height'
], true);

if ($query->returnMetadata()) {
if ($query->getReturnMetadata()) {
$fields['metadata'] = true;
}

try {
$options = [
'projection' => $fields,
'limit' => $query->limit(),
'limit' => $query->getLimit(),
'sort' => $sort,
];

// Skip some images if a page has been set
if (($page = $query->page()) > 1) {
$skip = $query->limit() * ($page - 1);
if (($page = $query->getPage()) > 1) {
$skip = $query->getLimit() * ($page - 1);
$options['skip'] = $skip;
}

Expand Down
22 changes: 11 additions & 11 deletions src/EventListener/DatabaseOperations.php
Original file line number Diff line number Diff line change
Expand Up @@ -177,55 +177,55 @@ public function loadImages(EventInterface $event) {
$returnMetadata = false;

if ($params->has('page')) {
$query->page($params->get('page'));
$query->setPage((int) $params->get('page'));
}

if ($params->has('limit')) {
$query->limit($params->get('limit'));
$query->setLimit($params->get('limit'));
}

if ($params->has('metadata')) {
$query->returnMetadata($params->get('metadata'));
$query->setReturnMetadata(true);
$returnMetadata = true;
}

if ($params->has('from')) {
$query->from($params->get('from'));
$query->setFrom($params->get('from'));
}

if ($params->has('to')) {
$query->to($params->get('to'));
$query->setTo($params->get('to'));
}

if ($params->has('sort')) {
$sort = $params->get('sort');

if (is_array($sort)) {
$query->sort($sort);
$query->setSort($sort);
}
}

if ($params->has('ids')) {
$ids = $params->get('ids');

if (is_array($ids)) {
$query->imageIdentifiers($ids);
$query->setImageIdentifiers($ids);
}
}

if ($params->has('checksums')) {
$checksums = $params->get('checksums');

if (is_array($checksums)) {
$query->checksums($checksums);
$query->setChecksums($checksums);
}
}

if ($params->has('originalChecksums')) {
$checksums = $params->get('originalChecksums');

if (is_array($checksums)) {
$query->originalChecksums($checksums);
$query->setOriginalChecksums($checksums);
}
}

Expand All @@ -240,8 +240,8 @@ public function loadImages(EventInterface $event) {

// Create the model and set some pagination values
$model = new Model\Images();
$model->setLimit($query->limit())
->setPage($query->page());
$model->setLimit($query->getLimit())
->setPage($query->getPage());

$images = $database->getImages($users, $query, $model);
$modelImages = [];
Expand Down

0 comments on commit b1d2aee

Please sign in to comment.