*/ 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 */ 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 */ 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; }