NotificationController.java

package com.hwhub.backend.presentation.rest.notification;

import com.hwhub.backend.application.service.notification.NotificationQueryService;
import com.hwhub.backend.domain.model.notification.NotificationModel;
import com.hwhub.backend.presentation.rest.notification.dto.NotificationListResponse;
import com.hwhub.backend.security.CurrentUserId;
import java.util.List;
import java.util.Map;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequiredArgsConstructor
@RequestMapping("/api/notifications")
public class NotificationController {

  private final NotificationQueryService queryService;

  @GetMapping
  public NotificationListResponse getNotifications(
      @RequestParam(value = "limit", defaultValue = "20") int limit,
      @RequestParam(value = "markRead", defaultValue = "true") boolean markRead,
      @CurrentUserId Long loginUserId) {
    List<NotificationModel> list = queryService.getNotifications(loginUserId, limit, markRead);
    return NotificationListResponse.from(list);
  }

  @GetMapping("/unread-count")
  public Map<String, Object> getUnreadCount(@CurrentUserId Long loginUserId) {
    return Map.of("unreadCount", queryService.getUnreadCount(loginUserId));
  }
}