Skip to content

Commit

Permalink
Add JsonApi resource and collection for empty result
Browse files Browse the repository at this point in the history
  • Loading branch information
hiqsol committed Jul 28, 2020
1 parent 3c0dd31 commit 6d048ae
Show file tree
Hide file tree
Showing 3 changed files with 84 additions and 0 deletions.
36 changes: 36 additions & 0 deletions src/jsonApi/EmptyCollectionDocument.php
@@ -0,0 +1,36 @@
<?php
declare(strict_types=1);

namespace hiapi\jsonApi;

use WoohooLabs\Yin\JsonApi\Schema\Document\AbstractCollectionDocument;
use WoohooLabs\Yin\JsonApi\Schema\JsonApiObject;
use WoohooLabs\Yin\JsonApi\Schema\Link\DocumentLinks;

/**
* Empty collection to return empty array (nothin is found).
*
* @author Andrii Vasyliev <sol@hiqdev.com>
*/
final class EmptyCollectionDocument extends AbstractCollectionDocument
{
public function __construct()
{
parent::__construct(new EmptyResource);
}

public function getJsonApi(): ?JsonApiObject
{
return new JsonApiObject('1.1');
}

public function getMeta(): array
{
return [];
}

public function getLinks(): ?DocumentLinks
{
return null;
}
}
45 changes: 45 additions & 0 deletions src/jsonApi/EmptyResource.php
@@ -0,0 +1,45 @@
<?php
declare(strict_types=1);

namespace hiapi\jsonApi;

use WoohooLabs\Yin\JsonApi\Schema\Link\ResourceLinks;
use WoohooLabs\Yin\JsonApi\Schema\Resource\AbstractResource;

final class EmptyResource extends AbstractResource
{
public function getType($entity): string
{
return 'empty';
}

public function getId($entity): string
{
return '';
}

public function getMeta($entity): array
{
return [];
}

public function getLinks($entity): ?ResourceLinks
{
return null;
}

public function getAttributes($entity): array
{
return [];
}

public function getDefaultIncludedRelationships($entity): array
{
return [];
}

public function getRelationships($entity): array
{
return [];
}
}
3 changes: 3 additions & 0 deletions src/jsonApi/ResourceFactory.php
Expand Up @@ -82,6 +82,9 @@ private function findResourceClassByAncestor($class): string

private function getCollection(array $rows): ResourceDocumentInterface
{
if (empty($content)) {
return new EmptyCollectionDocument;
}
$class = get_class(reset($rows));
if (empty($this->collections[$class])) {
$this->collections[$class] = $this->findCollection($class);
Expand Down

0 comments on commit 6d048ae

Please sign in to comment.