Skip to content

Commit 94f9083

Browse files
committed
Issue #110: update book tutorial
Signed-off-by: horea <horea@rospace.com>
1 parent a3a8a37 commit 94f9083

1 file changed

Lines changed: 24 additions & 10 deletions

File tree

docs/book/v6/tutorials/create-book-module.md

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -180,13 +180,13 @@ use Dot\DependencyInjection\Attribute\Entity;
180180
#[Entity(name: Book::class)]
181181
class BookRepository extends AbstractRepository
182182
{
183-
public function getBooks(array $params = [], array $filters = []): QueryBuilder
183+
public function getBooks(array $params = []): QueryBuilder
184184
{
185185
return $this
186186
->getQueryBuilder()
187187
->select('book')
188188
->from(Book::class, 'book')
189-
->orderBy($filters['order'] ?? 'book.created', $filters['dir'] ?? 'desc')
189+
->orderBy($params['sort'], $params['dir'])
190190
->setFirstResult($params['offset'])
191191
->setMaxResults($params['limit']);
192192
}
@@ -212,7 +212,7 @@ interface BookServiceInterface
212212

213213
public function saveBook(array $data): Book;
214214

215-
public function getBooks(array $filters = []): QueryBuilder;
215+
public function getBooks(array $params): QueryBuilder;
216216
}
217217
```
218218

@@ -233,6 +233,8 @@ use Doctrine\ORM\QueryBuilder;
233233
use Dot\DependencyInjection\Attribute\Inject;
234234
use Exception;
235235

236+
use function in_array;
237+
236238
class BookService implements BookServiceInterface
237239
{
238240
#[Inject(BookRepository::class)]
@@ -262,11 +264,23 @@ class BookService implements BookServiceInterface
262264
return $book;
263265
}
264266

265-
public function getBooks(array $filters = []): QueryBuilder
267+
public function getBooks(array $params = []): QueryBuilder
266268
{
267-
$params = Paginator::getParams($filters, 'book.created');
269+
$filters = $params['filters'] ?? [];
270+
$params = Paginator::getParams($filters, 'book.created');
271+
272+
$sortableColumns = [
273+
'book.name',
274+
'book.author',
275+
'book.releaseDate',
276+
'book.created',
277+
];
278+
279+
if (! in_array($params['sort'], $sortableColumns, true)) {
280+
$params['sort'] = 'book.created';
281+
}
268282

269-
return $this->bookRepository->getBooks($params, $filters);
283+
return $this->bookRepository->getBooks($params);
270284
}
271285
}
272286
```
@@ -605,13 +619,13 @@ class ConfigProvider
605619
return [
606620
'delegators' => [
607621
Application::class => [RoutesDelegator::class],
608-
PostBookResourceHandler::class => [HandlerDelegatorFactory::class],
609-
GetBookResourceHandler::class => [HandlerDelegatorFactory::class],
622+
PostBookResourceHandler::class => [HandlerDelegatorFactory::class],
623+
GetBookResourceHandler::class => [HandlerDelegatorFactory::class],
610624
GetBookCollectionHandler::class => [HandlerDelegatorFactory::class],
611625
],
612626
'factories' => [
613-
PostBookResourceHandler::class => AttributedServiceFactory::class,
614-
GetBookResourceHandler::class => AttributedServiceFactory::class,
627+
PostBookResourceHandler::class => AttributedServiceFactory::class,
628+
GetBookResourceHandler::class => AttributedServiceFactory::class,
615629
GetBookCollectionHandler::class => AttributedServiceFactory::class,
616630
BookService::class => AttributedServiceFactory::class,
617631
],

0 commit comments

Comments
 (0)