Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 16 additions & 14 deletions src/Endpoints/Database.php
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ class Database extends Endpoint
/**
* Database constructor.
*
* @param string $databaseId
* @param Notion $notion
* @param string $databaseId
* @param Notion $notion
*
* @throws \FiveamCode\LaravelNotionApi\Exceptions\HandlingException
* @throws \FiveamCode\LaravelNotionApi\Exceptions\LaravelNotionAPIException
Expand All @@ -64,24 +64,25 @@ public function query(): PageCollection
{
$response = $this
->post(
$this->url(Endpoint::DATABASES . "/{$this->databaseId}/query"),
$this->url(Endpoint::DATABASES."/{$this->databaseId}/query"),
$this->getPostData()
)
->json();

return new PageCollection($response);
}

public function getPostData():array {
public function getPostData(): array
{
$postData = [];

if ($this->sorts->isNotEmpty()) {
$postData['sorts'] = Sorting::sortQuery($this->sorts);
}

if ($this->filter !== null && !is_null($this->filterBag)) {
if ($this->filter !== null && ! is_null($this->filterBag)) {
throw new HandlingException('Please provide either a filter bag or a single filter.');
} elseif ($this->filter !== null || !is_null($this->filterBag)) {
} elseif ($this->filter !== null || ! is_null($this->filterBag)) {
$postData['filter'] = $this->filterData;
}

Expand All @@ -101,11 +102,10 @@ public function getPostData():array {
* @return Database $this
*
* @throws HandlingException
*
*/
public function filterBy(Collection|Filter|FilterBag $filter): Database
{
if($filter instanceof Collection) {
if ($filter instanceof Collection) {
return $this->filterByCollection($filter);
}
if ($filter instanceof FilterBag) {
Expand All @@ -119,8 +119,9 @@ public function filterBy(Collection|Filter|FilterBag $filter): Database
}

/**
* @param Filter $filter
* @param Filter $filter
* @return $this
*
* @throws HandlingException
*/
public function filterBySingleFilter(Filter $filter): Database
Expand All @@ -132,7 +133,7 @@ public function filterBySingleFilter(Filter $filter): Database
}

/**
* @param FilterBag $filterBag
* @param FilterBag $filterBag
* @return Database $this
*/
public function filterByBag(FilterBag $filterBag): Database
Expand All @@ -144,18 +145,19 @@ public function filterByBag(FilterBag $filterBag): Database
}

/**
* @param Collection $filterCollection
* @param Collection $filterCollection
* @return Database $this
*/
public function filterByCollection(Collection $filterCollection): Database {
public function filterByCollection(Collection $filterCollection): Database
{
$filterBag = new FilterBag(Operators::OR);
$filterBag->addFilters($filterCollection);

return $this->filterByBag($filterBag);
}

/**
* @param Collection|Sorting $sorts
* @param Collection|Sorting $sorts
* @return Database $this
*
* @throws HandlingException
Expand All @@ -178,7 +180,7 @@ public function sortBy(Sorting|Collection $sorts): Database
}

/**
* @param EntityCollection $entityCollection
* @param EntityCollection $entityCollection
* @return $this
*/
public function offsetByResponse(EntityCollection $entityCollection): Database
Expand Down
2 changes: 1 addition & 1 deletion src/Query/Filters/FilterBag.php
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ public function addFilter(Filter $filter): self
public function addFilters(Collection $filters): self
{
foreach ($filters as $filter) {
if(!$filter instanceof Filter) {
if (! $filter instanceof Filter) {
throw new HandlingException('The filter bag must only contain filter objects.');
}
$this->addFilter($filter);
Expand Down
2 changes: 1 addition & 1 deletion tests/FilterTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -58,4 +58,4 @@
$this->assertArrayHasKey('text', $queryData['filter']['or'][0]);
$this->assertArrayHasKey('contains', $queryData['filter']['or'][0]['text']);
$this->assertEquals('Grace', $queryData['filter']['or'][0]['text']['contains']);
});
});