package com.prudas.app.controller;

import com.prudas.app.dto.BlogPostResponse;
import com.prudas.app.dto.BlogPostSummaryResponse;
import com.prudas.app.dto.PageResponse;
import com.prudas.app.service.BlogService;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api/blog")
@RequiredArgsConstructor
public class BlogController {

    private final BlogService blogService;

    @GetMapping
    public PageResponse<BlogPostSummaryResponse> findAll(
            @RequestParam(defaultValue = "0") int page,
            @RequestParam(defaultValue = "9") int size) {
        int safeSize = Math.min(size, 50); // cap page size to prevent scraping-scale requests
        return blogService.findPublished(PageRequest.of(page, safeSize));
    }

    @GetMapping("/{slug}")
    public BlogPostResponse findBySlug(@PathVariable String slug) {
        return blogService.findPublishedBySlug(slug);
    }
}
