Skip to content
Snippets Groups Projects
Commit 60158d6f authored by Tobias Gross-Vogt's avatar Tobias Gross-Vogt
Browse files

courses APi with new abstract data provider from core

parent 3c96509d
No related branches found
No related tags found
No related merge requests found
Pipeline #199622 passed
......@@ -6,7 +6,7 @@
"php": ">=7.3",
"ext-json": "*",
"api-platform/core": "^2.6",
"dbp/relay-core-bundle": "^0.1.38",
"dbp/relay-core-bundle": "^0.1.48",
"symfony/config": "^5.4",
"symfony/framework-bundle": "^5.4",
"symfony/security-bundle": "^5.4",
......
This diff is collapsed.
<?php
declare(strict_types=1);
namespace Dbp\Relay\BaseCourseBundle\DataProvider;
use Dbp\Relay\BaseCourseBundle\API\CourseProviderInterface;
use Dbp\Relay\BaseCourseBundle\Entity\Course;
use Dbp\Relay\CoreBundle\DataProvider\AbstractDataProvider;
use Symfony\Component\HttpFoundation\RequestStack;
class CourseDataProvider extends AbstractDataProvider
{
/** @var CourseProviderInterface */
private $courseProvider;
public function __construct(CourseProviderInterface $courseProvider, RequestStack $requestStack)
{
parent::__construct($requestStack);
$this->courseProvider = $courseProvider;
}
protected function getResourceClass(): string
{
return Course::class;
}
protected function getItemById($id, array $options = []): object
{
return $this->courseProvider->getCourseById($id, $options);
}
protected function getPage(int $currentPageNumber, int $maxNumItemsPerPage, array $filters = [], array $options = []): array
{
if ($search = ($filters['search'] ?? null)) {
$options['search'] = $search;
}
// TODO: change getCourses to accept $currentPageNumber and $maxNumItemsPerPage as arguments and return page items as array
$options['page'] = $currentPageNumber;
$options['perPage'] = $maxNumItemsPerPage;
$options['partialPagination'] = true;
return $this->courseProvider->getCourses($options)->getItems();
}
}
......@@ -19,10 +19,8 @@ use Dbp\Relay\CoreBundle\LocalData\LocalDataAwareTrait;
* "tags" = {"BaseCourse"},
* "parameters" = {
* {"name" = "search", "in" = "query", "description" = "Search filter (partial, case-insensitive text search on 'name' attribute)", "type" = "string", "required" = false},
* {"name" = "lang", "in" = "query", "description" = "Language of result", "type" = "string", "enum" = {"de", "en"}, "example" = "de"},
* {"name" = "queryLocal", "in" = "query", "description" = "Local query parameters to apply", "type" = "string"},
* {"name" = "includeLocal", "in" = "query", "description" = "Local data attributes to include", "type" = "string", "example" = "BaseCourse.code,BaseCourse.numberOfCredits"},
* {"name" = "partialPagination", "in" = "query", "description" = "Partial pagination", "type" = "bool", "example" = "false"}
* {"name" = "queryLocal", "in" = "query", "description" = "Local query parameters to apply", "type" = "string", "example" = "term:W"},
* {"name" = "includeLocal", "in" = "query", "description" = "Local data attributes to include", "type" = "string", "example" = "code,numberOfCredits"}
* }
* }
* }
......@@ -35,8 +33,7 @@ use Dbp\Relay\CoreBundle\LocalData\LocalDataAwareTrait;
* "tags" = {"BaseCourse"},
* "parameters" = {
* {"name" = "identifier", "in" = "path", "description" = "Resource identifier", "required" = true, "type" = "string", "example" = "257571"},
* {"name" = "lang", "in" = "query", "description" = "Language of result", "type" = "string", "enum" = {"de", "en"}, "example" = "de"},
* {"name" = "includeLocal", "in" = "query", "description" = "Local data attributes to include", "type" = "string", "example" = "BaseCourse.code,BaseCourse.numberOfCredits"}
* {"name" = "includeLocal", "in" = "query", "description" = "Local data attributes to include", "type" = "string", "example" = "code,numberOfCredits"}
* }
* }
* }
......
services:
Dbp\Relay\BaseCourseBundle\Controller\:
resource: '../../Controller'
Dbp\Relay\BaseCourseBundle\Controller\GetAttendeesByCourse:
autoconfigure: true
autowire: true
Dbp\Relay\BaseCourseBundle\DataProvider\:
resource: '../../DataProvider'
Dbp\Relay\BaseCourseBundle\DataProvider\CourseDataProvider:
autowire: true
autoconfigure: true
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment