56 lines
1.7 KiB
PHP
56 lines
1.7 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Post;
|
|
|
|
use App\Shared\Exception\NotFoundException;
|
|
use App\Shared\Pagination\PaginatedResult;
|
|
|
|
/**
|
|
* Contrat applicatif du domaine Post.
|
|
*/
|
|
interface PostServiceInterface
|
|
{
|
|
/** @return Post[] */
|
|
public function getAllPosts(?int $categoryId = null): array;
|
|
|
|
/**
|
|
* @return PaginatedResult<Post>
|
|
*/
|
|
public function getAllPostsPaginated(int $page, int $perPage, ?int $categoryId = null): PaginatedResult;
|
|
|
|
/** @return Post[] */
|
|
public function getRecentPosts(int $limit = 20): array;
|
|
|
|
/** @return Post[] */
|
|
public function getPostsByUserId(int $userId, ?int $categoryId = null): array;
|
|
|
|
/**
|
|
* @return PaginatedResult<Post>
|
|
*/
|
|
public function getPostsByUserIdPaginated(int $userId, int $page, int $perPage, ?int $categoryId = null): PaginatedResult;
|
|
|
|
public function getPostBySlug(string $slug): Post;
|
|
|
|
public function getPostById(int $id): Post;
|
|
|
|
public function createPost(string $title, string $content, int $authorId, ?int $categoryId = null): int;
|
|
|
|
public function updatePost(int $id, string $title, string $content, string $newSlugInput = '', ?int $categoryId = null): void;
|
|
|
|
/** @return Post[] */
|
|
public function searchPosts(string $query, ?int $categoryId = null, ?int $authorId = null): array;
|
|
|
|
/**
|
|
* @return PaginatedResult<Post>
|
|
*/
|
|
public function searchPostsPaginated(string $query, int $page, int $perPage, ?int $categoryId = null, ?int $authorId = null): PaginatedResult;
|
|
|
|
public function countMediaUsages(string $url): int;
|
|
|
|
/** @return Post[] */
|
|
public function findMediaUsages(string $url, int $limit = 5): array;
|
|
|
|
public function deletePost(int $id): void;
|
|
}
|